DirectX総合スレ (Part6)
■ このスレッドは過去ログ倉庫に格納されています
0001DirectX6
2006/11/17(金) 00:38:52ID:lRjOsWKq他の言語使ってる奴はいますぐ消えろ
■過去スレ
DirectX総合スレ
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
0002こぴぺ
2006/11/17(金) 00:39:45ID:lRjOsWKq【C++】 DirectX初心者質問スレ Part10 【C】
http://pc8.2ch.net/test/read.cgi/tech/1153831096/
C#でDirectX9 初心者の館 2頂点目
http://pc8.2ch.net/test/read.cgi/tech/1103998649/
Managed DirectX vol.2
http://pc8.2ch.net/test/read.cgi/tech/1061285378/
くだすれDirectX(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1132965206/
■関連サイト
- MSDN > DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx
- DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx
- DirectX Info Lib (デバイス情報のデータベース。すばらしい!)
ttp://www.netsphere.jp/dxinfo/
- BBX(掲示板)
ttp://bbx.hp.infoseek.co.jp/
0003名前は開発中のものです。
2006/11/17(金) 00:49:17ID:oQVvqwfj結局 ID:bg7PnqAA はグラフィックカードを探しにきただけなのか・・(=´Д`=)
0004名前は開発中のものです。
2006/11/17(金) 00:57:01ID:oQVvqwfj最近のチップは2^nテクスチャも作っちゃうのな。
チップメーカーもマイクロソフトも、初心者に優しすぎ。
そして、パフォーマンスを省みないコードが蔓延・・
0005名前は開発中のものです。
2006/11/17(金) 00:57:40ID:oQVvqwfj0006名前は開発中のものです。
2006/11/17(金) 01:52:57ID:WIoW3qp30007名前は開発中のものです。
2006/11/17(金) 03:44:45ID:jbJD+a1Y市んでいい
0008名前は開発中のものです。
2006/11/17(金) 04:36:48ID:hiRJItCM0009名前は開発中のものです。
2006/11/17(金) 09:30:00ID:VAvIfjuX大して影響しないんじゃないかね。
あくまで2D処理用って感じがする。
前スレの坊やの場合サンプリングの仕方が間違ってて
WRAP指定で外側参照してるとかじゃないのかねぇ。
0010名前は開発中のものです。
2006/11/18(土) 09:21:51ID:sK+1C8GV自前で縦横半分・1/4の画像を用意してはっつけたらパフォーマンスがあがったんです。
こういう縮小に対してミップマップって働かないんですか?
#ミップマップの説明を探したら「距離の遠いものに対して」という記述だったもので…
0011名前は開発中のものです。
2006/11/18(土) 09:37:59ID:sK+1C8GV0012名前は開発中のものです。
2006/11/18(土) 11:57:18ID:/7oH2XHU帯が動く様(例:ワンダの前掛けみたいな)を
作ってみようと思ったのだが
こんなもんでおkでしょうか?
http://gamdev.org/up/img/8117.zip
キーの上下でZ移動
終わる時はESC
もしかしてバネとか2重振り子とかで動かすのだろうか
0013名前は開発中のものです。
2006/11/18(土) 15:57:45ID:x7HTQtUO根元のほうの動きが硬すぎない?
引っ張ってもまがったままだし、止めると先っぽから戻ってくるし。
布シムならCloth Simulationでぐぐればいっぱい出てくるよ。
0014名前は開発中のものです。
2006/11/18(土) 17:41:09ID:/7oH2XHUクロスシミュレーションは難しそうだったのでスルーしてましたが
4亀にあるVF5の話し見てると
帯はボーン、スカートはクロスシム使ってるみたいですな
IKはモーションの補正に使われてたようで
外国のクロスシムはデモとソースコードがポイとあるだけでよくわからん
数式を説明したサイトを探しまくりんぐ中
ヒントどもでした。
0015名前は開発中のものです。
2006/11/18(土) 19:14:20ID:x7HTQtUO> 外国のクロスシムはデモとソースコードがポイとあるだけでよくわからん
> 数式を説明したサイトを探しまくりんぐ中
解説が欲しいならGame Programing Gems5にあるよ。
0016名前は開発中のものです。
2006/11/18(土) 19:54:39ID:/7oH2XHUGems5に載ってるのですか
しかし、\12,600ギギギ・・・
Gemsシリーズは持ってなかったなそういえば
001712
2006/11/19(日) 11:56:55ID:nuXL8lO9ウマイハナシさんの所にあったわー
ついでに12のプログラムは消去します。
0018名前は開発中のものです。
2006/11/20(月) 05:52:37ID:HLTAO6bT拡大されてもちろん画質は悪くなるんですが、描画速度は上がりました。
これなんででしょうか?グラフィックでもキャッシュみたいのがあるんですか?
0019名前は開発中のものです。
2006/11/20(月) 07:32:45ID:pwq9xUDlグラフィックのキャッシュではなくCPUのキャッシュ
CPUのキャッシュに収まるテクスチャが最も高速になる
0020名前は開発中のものです。
2006/11/20(月) 09:58:35ID:fk/qJJizメモリ帯域とテクスチャキャッシュの問題の気がするけど。
0021名前は開発中のものです。
2006/11/20(月) 11:39:59ID:iX6x1ORFグラフィックチップにテクスチャ用のキャッシュがあるよー
近隣がよくヒットするように変な並び方になってるんだよねテクスチャ
002212
2006/11/20(月) 12:02:21ID:wYjcGxfiシミュレータできたどーーー
といっても野村XXさんのを改造しただけですがね・・・
先人は偉大
0023名前は開発中のものです。
2006/11/21(火) 00:44:56ID:rk1/UrCBサイズ10のテクスチャの場合、テクセル範囲は0.05〜9.95まで。
0024名前は開発中のものです。
2006/11/21(火) 00:49:49ID:rk1/UrCB0025名前は開発中のものです。
2006/11/21(火) 01:24:36ID:rk1/UrCBなにか動きが布っぽく無いような・・・
昔作った布シムをage。法線の計算が怪しめですが、何かの参考にどうぞ
ttp://up.img5.net/src/up0700.zip
0026名前は開発中のものです。
2006/11/21(火) 01:30:48ID:UGfSFsCm布の動きなら実物見たほうが数倍早いし。
0027名前は開発中のものです。
2006/11/21(火) 02:19:42ID:rk1/UrCB>>22 がソースコードを付けなかった事に対する戒めです。
>>22 もソースコードを付けていないのに、なぜ私だけ責められなければ
ならないのでしょう。
0028名前は開発中のものです。
2006/11/21(火) 02:48:51ID:5u/EGarO0029名前は開発中のものです。
2006/11/21(火) 02:49:25ID:5u/EGarO003018
2006/11/21(火) 04:39:38ID:BlSC7NgNやはりキャッシュなのですね。色数減らしてキャッシュに入るようにしたりできんのかな。
ありがとうございました。
0031名前は開発中のものです。
2006/11/21(火) 04:48:13ID:bqZ5WO/j0032名前は開発中のものです。
2006/11/21(火) 05:28:36ID:rk1/UrCBここって、不用意にプログラムageると嫌がられるスレなの?
前スレ1000とか言われても、dat落ちして見れないし。
軽い気持ちでageたんだけど、迷惑だったみたいですね。
プログラムも消しときますね。
0033名前は開発中のものです。
2006/11/21(火) 09:47:08ID:eybOAr7K誰も突っかかってないしwガラスのハートだなw
0034名前は開発中のものです。
2006/11/21(火) 11:06:26ID:iVFp2res皆さんはどのようにして実現していますか?
私の場合、DXUTSetConstantFrameTimeを使ってみたのですが
どうも機能していないようだったので、timeBeginPeriod(1)と共用し
以下のようなコードをFrameMoveコールバックの先頭に配置しました。
static double nextTime = DXUTGetTime() + per;
if (DXUTGetTime() < nextTime)
{
do{
UINT wait = (nextTime - DXUTGetGlobalTimer()->GetTime())*1000;
Sleep(wait);
}while(DXUTGetGlobalTimer()->GetTime() < nextTime);
}
nextTime += per;
一応それなりに動いてはいるようなのですが、1,2フレームの誤差が気になります。
より良い方法などあればご教授頂けませんでしょうか。
0035名前は開発中のものです。
2006/11/21(火) 11:27:11ID:rk1/UrCB描画スレッドでWaitForSingleObjectを使って待ちなさい。
Sleep(time) (但しtime>0)の精度は20msぐらいしかないのでゲームには向かないです。
Sleep(0)はすぐに制御を返します。これを使ってループ回してタイミングをとると
正確な同期がとれますが、CPU使用率が100%になるので嫌われます。
餅は餅屋
0036名前は開発中のものです。
2006/11/21(火) 12:04:19ID:rk1/UrCBtimeBeginPeriod使うとSleepの精度上がるのね。
今さくっと調べてみたら結構Sleepでループ回している人も多いみたいね。
>809 :名無しさん@ゲムデヴ :2003/09/14 11:01 ID:???
>オレは5ms以上時間があるならSleep(1)をし
>それ未満だったらSleep(0)でループしてるよ
>上手く行ってるような気がするよ
こんなの見つけたから参考にしてあげて
003712
2006/11/21(火) 12:58:53ID:ChnFsjp20038名前は開発中のものです。
2006/11/21(火) 15:58:32ID:iVFp2resなるほと、タイマイベントを使えばよかったのですね
確かにこれは比較しても精度が良いです
どうもありがとうございました
0039名前は開発中のものです。
2006/11/22(水) 09:25:51ID:rOjjh+1c全部描画してるもので遅いんです
これは小窓サイズのテクスチャに描画して貼り付ければ高速になるんでしょうか?
0040名前は開発中のものです。
2006/11/22(水) 09:28:55ID:wp5MfMt2多量のポリゴンモデルなのか、1枚板の巨大ポリゴンなのか。
0041名前は開発中のものです。
2006/11/22(水) 09:44:09ID:rOjjh+1c0042名前は開発中のものです。
2006/11/22(水) 10:15:13ID:9wdx7tnkビューボートを小さくすればいいわ。
ただし通常時と同じパースにしようと思ったら
射影行列の調整もいるわね。
004342
2006/11/22(水) 10:16:33ID:9wdx7tnk0044名前は開発中のものです。
2006/11/22(水) 12:45:11ID:9wdx7tnkhttp://gamdev.org/up/img/8161.zip
0046名前は開発中のものです。
2006/11/25(土) 11:58:49ID:28pYdgx7そんな宣言は無いと言われて困っています(´・ω・`)
d3d9anim.h内を覗くとあるし、他の関数は問題なく使えます。
何が原因なのでしょうか?
0047名前は開発中のものです。
2006/11/25(土) 16:56:13ID:UiiIQlRV呼ぼうとしてるのは、ほんとにID3DXAnimationControllerのインスタンス?
0048名前は開発中のものです。
2006/11/25(土) 18:36:35ID:yXVUaN7Eありがとうございます。
別のクラスから呼んでました。アホだorz
0049名前は開発中のものです。
2006/12/01(金) 16:09:46ID:EFQj1BYaこれアンチエイリアスするには自前でフチのα値設定するしかないんでしょうか?
0050名前は開発中のものです。
2006/12/01(金) 16:42:11ID:DvsEpNU7g_pD3DDevice->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);
g_pD3DDevice->SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);
0051名前は開発中のものです。
2006/12/03(日) 00:37:44ID:0psPS4tl自作フレームワークが形になってきたんで、それで試しに一本ゲームを作ったら
プレイ中に幾らか進んだところで D3DXCreateTextureFromFileEx 関数が
D3DERR_OUTOFVIDEOMEMORY エラーを吐きやがる。
ずっと悩んでたが、試しにアロー演算子書いてメソッド名の補完リストを出してみたら
Releaseメソッドが出てきたので、これ試したらエラー出なくなった。
もしかして LPナントカ っていうポインタ型に実体を持たせた後は
とりあえずReleaseするのが常識だったんですか・・・
ゲーム終了時とか「とりあえずこれで終わる時」に消えるオブジェクトはちゃんと消してても
「ゲーム中に何度も書き換える」ものは上書きで元有った奴を書き換えて使えると思ってた(´・ω::;::;;;,
0052名前は開発中のものです。
2006/12/03(日) 09:43:42ID:B3PEhHscそういうことだ。
0053名前は開発中のものです。
2006/12/03(日) 12:29:49ID:zNtBISG4> 「ゲーム中に何度も書き換える」
その書き換え方が問題だ。
D3DXCreateTexture* はその名のとおり新規に作成するのであって、書き換え関数ではない。
Release せずに資源を再利用したければ D3DXLoadSurface* 関数とかを使う。
Release してから D3DXCreateTexture* のほうが絶対に楽だけど。
0054名前は開発中のものです。
2006/12/03(日) 18:29:51ID:B3PEhHsc確保したメモリはちゃんと解放する習慣をつけようぜってな感じ。
0055名前は開発中のものです。
2006/12/03(日) 18:32:59ID:a9B+1mao0056名前は開発中のものです。
2006/12/03(日) 18:42:53ID:0psPS4tlmalloc <-> free も new<->delete もちゃんとするようにしてるんだが
DirectXの方は、windowsプログラミングの経験も含めてまだ浅いので
API関数がメモリをどう確保するのかまだなじめない・・・
頑張ります
0057名前は開発中のものです。
2006/12/07(木) 01:00:20ID:v+lHDW5u利点 → 簡単。
欠点 → 1フレーム内で何度も回転操作を行う場合は処理が重い。
【XYZそれぞれの回転角を3つのfloat型変数に保管し、回転操作の際はその軸のfloat型変数を
増減させる。値の変化があったら描画直前でワールド行列を作り直す派】
利点 → 処理が軽い。
欠点 → 親子関係が入ってくると作りにくい。
私が前者で友人が後者なのですが、皆さんは回転操作ってどうしてます?
普通は前者ですよね?回転操作ってそんなシビアになるほど遅くないですよね?
0058名前は開発中のものです。
2006/12/07(木) 01:16:16ID:ZPF/XNPeどうやっても最後は行列使うんだから同じコトいってるとしか思えん。
そもそも1フレーム内で何度も回転って1つのモデルを何度も表示って意味ならどっちも同じ事だし。
0059名前は開発中のものです。
2006/12/07(木) 01:46:22ID:Ej/wW5Bp自分の好みでおk。
それでも気になるなら自分で測ってみればいい、3分もかからんだろ。
0060名前は開発中のものです。
2006/12/07(木) 01:47:38ID:1pSKfsu6・姿勢を示す単位ベクトルを保持し、描画時にマトリックスにぶちこんでる。
・多間接の場合は親から子の順番で描画し、子は親のマトリックスを掛け合わせる。
いずれの場合も三角関数は使わないし、単位ベクトルも近似的に計算している。
三角関数使う場合はどうするのと聴かれそうだが、
可能な限り多数の描画対象を扱うために、
基本的に三角関数は使わないゲームデザインなので、答えようがない;
0061名前は開発中のものです。
2006/12/07(木) 05:30:23ID:prA2cvfCD3DXMatrixRotationX
D3DXMatrixRotationY
D3DXMatrixRotationZ
でそれぞれ作って掛け算してるってのが重いって事を言いたいのだろうか?
具体的に重さが変わる処理は、どこのことを言ってるの?
0062名前は開発中のものです。
2006/12/07(木) 06:53:43ID:VqbMwM2W説明が下手でごめんなさい。
例えば1フレーム内で10回の回転操作を行うとすると
前者のパターンでは回転角を現すfloat型変数に対して回転角を10回加減算した後に行列を作成し
後者のパターンでは回転行列の関数を10回呼ぶ事になります。
結果は似たようなもだけどどちらのアプローチが良いか
どんな利点や欠点があるのか、という話です。
>>59さんがいうようにどっちでもいいのかもしれませんが、他の方の意見も聞きたいです。
>>60
>姿勢を示す単位ベクトルを保持し、描画時にマトリックスにぶちこんでる
う、よくわからないです。ごめんなさい。
姿勢を示す単位ベクトルというのは3軸方向へ伸びる3つの単位ベクトルでしょうか?
でもそれだと普通に行列を回転させるのと変わらないでしょうし・・・。
>>61
そうです。私のやり方だと回転操作を行うたびに行列回転をするので重く、
友人のやり方では回転操作はxyz軸を示す3つのfloat型変数に対してのみ操作を行うため、
行列への回転操作は描画直前の一度だけなので比較的軽い。という事です。
長くてごめんね
0063名前は開発中のものです。
2006/12/07(木) 07:40:24ID:prA2cvfCその前に、その友人の方法にちょっと突っ込みたいのだが…
XYZ軸それぞれに回転量を持っているとしてだ、
現在の姿勢に対して回転させるときにその友人は
RotationY += hoge;
こんな風にしてるんだよね?
そうだとして、最終的に描画のためにマトリックスに変換するときに
RotationX、RotationY、RotationZを使って行列に変換してるんじゃねーかと憶測しているのだけど、
Coordinate = XRotMat * YRotMat * ZRotMat;
みたいになってる? ソレだとまず理論的に破綻してるような気が…
0064名前は開発中のものです。
2006/12/07(木) 10:11:48ID:Ej/wW5Bpstruct Obj {
void rotateX(float f) { RotateX(m_local, m_local, f); }
Matrix m_localx;
};
つー感じで。
0065名前は開発中のものです。
2006/12/07(木) 21:24:51ID:1pSKfsu6>>57の前者は今まで行われたX軸Y軸Z軸それぞれの回転の履歴を保存しておき、その順番に応じて適用。
>>57の後者は今まで行われたX軸Y軸Z軸それぞれの回転の角度をそれぞれに積算して適用。
>>60は(単位ベクトル云々で事実上)行列を保持して回転の結果を保存して適用。
>>57の前者と後者は全く違う方法。
>>57の前者と>>60は全く同じ方法。ただし>>57毎フレーム全部再計算している。
0066名前は開発中のものです。
2006/12/09(土) 01:12:52ID:QNYlKrF00067名前は開発中のものです。
2006/12/09(土) 18:33:24ID:uwxtEYiAググって出てくるサイトで説明されているDirectX Extensions For VS.NETとか見当たらなかったんだが・・・。
0068名前は開発中のものです。
2006/12/09(土) 19:55:11ID:mmrHLc8Y■ このスレッドは過去ログ倉庫に格納されています