[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/06 20:32 / Filesize : 251 KB / Number-of Response : 956
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part24 【C】



1 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:06:29 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part23 【C】
pc12.2ch.net/test/read.cgi/tech/1242977486/

297 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:04:24 ]
>>293
一番あやしいのは、逆に遅くなってるAGPのやつですよね。

pDev->CreateVertexBuffer(
sizeof(D3DVERTEX) * 4 * MAX_SMOKE,
D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY ,
MYFVF,
D3DPOOL_DEFAULT,
&m_buffer,
NULL
);

pDev->CreateIndexBuffer(
sizeof(WORD) * 6 * MAX_SMOKE,
D3DUSAGE_WRITEONLY ,
D3DFMT_INDEX16,
D3DPOOL_DEFAULT,
&m_index,
NULL
);

で生成し、毎フレーム下記のようになっています。
>>294 IndexBufferは使ってますよ

m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD);
m_buffer->Unlock();
pDev->SetStreamSource(0, m_buffer, 0, sizeof(D3DVERTEX));
pDev->SetIndices(m_index);

pDev->SetFVF(MYFVF);
pDev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4 * m_smokes.size(), 0, 2 * m_smokes.size());

298 名前:294 mailto:sage [2009/07/10(金) 00:04:34 ]
>>296
は?UP云々なんて一言も言ってないんだがw

299 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:05:10 ]
>>296
その根拠は?

>>292
動的バッファLock時のオプションは
どうしてる?

300 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:14:21 ]
>>297
む、こりゃちょっとひどい気がする
スレちゃんと読んでないけど、xyzは毎フレーム変化してるんだよな?
どのタイミングで更新してるんだい?

301 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:19:30 ]
>>299
D3DLOCK_DISCARDですね。
m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD);
この行が、動的バッファのロックです。

LockとUnlockの間に「ここで頂点情報を書き込んでいます」とか書くべきでした。すいません

>>300
え、初心者サイトのサンプルをほぼそのまま使ったのですが、妙でしょうか?

xyzの更新は、Lockの前に行っています。
m_smokesというのが、ビルボードの中心座標の配列vector<D3DXVECTOR3>です。

302 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:24:23 ]
ちゃんとD3DLOCK_DISCARDでロックしてるし、
動的バッファの取り扱いは、特に問題はなさそう。
へえ、これでUP系の半分の性能なんだ、信じられんw

303 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:29:11 ]
>>302
オンボ環境ではしっかりUPのほうが遅かったので、環境によるような気がします。
明日再度オンボ環境の場所に行くので、再度慎重に測り直してみます。

304 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:30:56 ]
>>301
うーむ、Lockの前に更新って、矛盾してないか
このソースだとDYNAMICでバッファを確保した意味がないよ?

305 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:34:25 ]
こりゃ計測方法も怪しくなってきたなw
両方のソース示さない限り無意味だろw



306 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:39:25 ]
>>304
すいません。ちょっと更新の意味を取り違えているのかもしれません
for(DWORD i = 0; i < m_smokes.size(); ++i)
{
m_smokes[i].y += 0.1f;
}
m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD);
for(DWORD i = 0; i < m_smokes.size(); ++i)
{
(D3DVERTEX) *p = &vertex[i * 4];
p[0].x = m_smokes[i].x - 0.5f;
p[0].y = m_smokes[i].y + 0.5f;
p[0].z = m_smokes[i].z;
p[1].x = m_smokes[i].x + 0.5f;
p[1].y = m_smokes[i].y + 0.5f;
p[1].z = m_smokes[i].z;
p[2].x = m_smokes[i].x + 0.5f;
p[2].y = m_smokes[i].y - 0.5f;
p[2].z = m_smokes[i].z;
p[3].x = m_smokes[i].x - 0.5f;
p[3].y = m_smokes[i].y - 0.5f;
p[3].z = m_smokes[i].z;
}
m_buffer->Unlock();

こんな感じにやっています。
実際は座標のほかに、normal, color, uv もセットしています。
あと、もうちょいマシなコピーの仕方をしています。

>>305
単純に1000フレーム回るまでの時間を計測しています。
描画以外はほとんど何もやっていないのと、座標移動計算はまったくといってよいほど時間をくっていないのを確認済みです。

307 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:41:06 ]
>>294=>>298=>>305
初心者スレ荒らして楽しい?
他人の足引っ張って立って、自分の価値を高めることにはならないぜ?
無意味だと思うならスルーしてなよ

308 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:43:46 ]
特に問題あるようなソースには見えないな
UP系のほうが早い場合があるというのは面白い
UPはドライバ側で何かしらの最適化を行っているのかもね

309 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:44:01 ]
>>307
連続でお疲れさんw

310 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:45:48 ]
294 indexbufferも使えない素人が!(キリッ!!
297 >>294 IndexBufferは使ってますよ

腹抱えてワロタw

311 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:53:01 ]
久々に有益情報が出てるな
俺は何も考えずにDrawPrimitiveUP使ってた
Instancingとやらを使うと速度が5倍になるとかマジパネェから俺も実験してみるわ

312 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:53:04 ]
俺のソースでは、mallocaで確保した一時バッファにデータを作ってから
Lock→memcpyでまるごとコピー→Unlock と、
ロックしている時間が短くなるようにしてたな。
なんとなくその方が良かろうと思っただけで、計測してないから鵜呑みにはするな。


313 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:57:20 ]
294じゃないけど、よくおまえらそこまで無条件で信用できるな。
煽る気はないけど、ソースのないベンチなんて昔は弾いていた気がするんだが。

314 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:01:39 ]
DirectX10使えば縮退ポリゴンもいらねーしデータ転送量も抑えられるしでウハウハ。
SO使えば座標更新もGPUで出来てさらにウハウハ。

315 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:06:14 ]
>>312
D3DLOCK_DISCARDを指定すると、
一時バッファを用意してくれるらしいので
その処理は冗長と言える。



316 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:16:45 ]
俺もGeforce9600GTなんで、さくっと試してみたよ
DrawIndexedPrimitiveとDrawIndexedPrimitiveUP
LVetexで位置のみ毎時更新
前者は動的バッファがたまり次第フラッシュ
後者もそれに合わせようと思ったけど、面倒なんでメモリ一括確保
疲れてるんで固定機能でやったけど、1万ポリでも誤差程度
寝る

317 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:20:16 ]
>>316
そうなるはずだ。
UP系かそうでないかでそんなに差が出るというのはちょっとおかしいんじゃないか。

プリミティブの座標更新をGPUにやらせることで全体の高速化を図るというのならまだ分かるが。

318 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:30:53 ]
>>316
結局描画におけるGPUの時間が変わらないからフレーム単位だと時間は変わらないが
DrawPrimitive()とDrawPrimitiveUp()だと関数から帰ってくるまでの時間にかなり差があったと思うが。

319 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:04:48 ]
DirectShowのスレでも質問したのですが、スレの勢いを考えてこちらにも質問させていただきます。

DirectShowでGeekなページを参考に動画再生をするプログラムを作りました
www.geekpage.jp/programming/directshow/change-rate.php
参考URLでは『put_Rateの引数を2.0などに変更すると倍速再生になります。
put_Rateの引数に負の値(マイナスの値)を渡すと巻き戻し再生になります』
とありますが、

pMediaPosition->put_Rate(0.5);
のput_Rateの引数を負の値にしても大部分のフィルタは逆再生をサポートしていないため実行されません。

そこでIMediaSeekingかIMediaPositionを用いて、または用いなくてもいいのでdirectshowで
動画の巻き戻しをするプログラムを作りたいのですが、どうすればよいのやら困っています。
何か良い考えはないでしょうか?
是非知恵をおかしください!

320 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 04:29:31 ]
テクスチャのサンプリングをWrapにして何度も繰り返すような貼り方をすると負荷が高いと聞いたんですが
これは本当ですか?
使用するテクスチャが小さくなるから、むしろこっちのほうが良いと思ったんですが
自分の環境( GTX280 )では違いが見られなかったんですが
オンボードのような低スペックのビデオカードだと遅くなったりしますか?

321 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:27:10 ]
うそです。

322 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:28:23 ]
ゲームの動画再生にDirectShowはいつも使っているけど、再生速度の変更が必要になったことがないから知らない。

323 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:34:33 ]
AGPっていつの時代だよw

324 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 09:08:50 ]
ソース無いベンチなんて意味ないよ
ということではあるそうですが、一応報告しておきます

グラボつき(GF9600)の環境で試したところ、
UP系 5
AGP  8
281法 1

オンボ環境で試したとところ
UP系 10
AGP  9
281法 8.5

くらいの処理時間になりました。
あくまで同一環境内での比率なので、GF9600の数値とオンボの数値には関係性はありません。
まったく同じ実行ファイルで実験しました。

>>316
私の実験と差がありそうなのは下記2つっぽいですね
>座標だけ更新
座標だけストリームを分けて、そこだけ更新したということでしょうか?
(私のは、座標のほかに法線・カラー・UVも毎フレームVRAMに転送しています)

>前者は動的バッファがたまり次第フラッシュ
これはどういう方法でしょうか?
D3DLOCK_DISCARDではない方法ですかね

325 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:36:58 ]
定数レジスタの数について質問があります
DX8時代は96
DX9時代は256
というのはなんとなく知っているのですが、これは頂点シェーダのバージョンに依存しているのでしょうか?

もしそうだとして
定数レジスタを200個近く使っている状態で
VertexShader = compile vs_1_1 vertexShader();
とやったとき、問題なく動作してしまうのが不思議です
エラーもでませんし、見た目も問題なく表示されてしまうのです



326 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 12:08:32 ]
最低サイズが だろ?
詳細はcapsで調べれたと思う
どのみち最低サイズを守った方が利口だが

327 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 13:03:54 ]
ICH10RでSSD2台で7RCでRAID0組みたいです。途中でFDDからRAIDドライバ読み込み必要ですか?

328 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:54:37 ]
>>324です。
原因がわかりました。

どうやら、>>306のように、ロックしてからループで書きこんでいくのはよろしくないようです。
>>312のように、一時バッファを用意して全部メインメモリ上で書きこんでから、Lock。
memcpyでいっきに流し込みすぐUnlock
とやることで、UP系と同等の性能になりました。
「これならUPでいいじゃん」って思ってしまいますね…。

329 名前:316 mailto:sage [2009/07/11(土) 12:23:40 ]
>>324
なんの工夫もなくロックして位置や色を書き込み
memcpy未使用

フラッシュはバッファに溜まったものを吐き出すって意味
今時使わない?俺もロートルか

330 名前:316 mailto:sage [2009/07/11(土) 13:00:33 ]
memcpyでもやってみたが同じだな

フォーラムをざっと見てきたが、UPはレガシー扱いで間違いないだろう
・UPはハードウェアサポートが約束されていない
・UPは中間バッファを勝手に使うからパフォーマンスが落ちる(チューニングしづらい)
  少なくとも2倍から3倍のメモリを使う
・描画命令を出しても、完了してから制御を戻すわけでないので、UPのために確保したメモリがいつまで妥当であるべきかが不定
・例え変化が無くてもmemcpyが描画命令のたびに呼ばれる(最適化が出来ない)

問題の件だが、冗長なメモリコピーがそのままUPのコストになるので、
扱う頂点数が増えるほどUPは不利になるだろう
おそらく結果が逆転してしまうなら、正しく使えてないのだと思う

331 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 13:12:57 ]
ロックが長いってだけで、1.6倍の遅延に繋がるとは思えない。
なぜそうなるのか、シナリオが作れない。
誰か説明してくれない?

332 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 13:35:23 ]
>>330
・描画命令を出しても、完了してから制御を戻すわけでないので、UPのために確保したメモリがいつまで妥当であるべきかが不定

流石にこれはないだろ。
UPを呼び出した直後に、確保したメモリーを壊してしまっても大丈夫だよ

333 名前:316 mailto:sage [2009/07/11(土) 14:12:18 ]
>>332
さてどうだろうな
描画命令はFIFOで処理されタイミングは不定
投げ入れ側は(Sendではなく)Post扱い
そしてUPの場合、向こう側で全コピーが必ず発生している

壊したメモリがたまたま生きていただけかもしれない
*大丈夫だった*以上のことは言えないはずだ

334 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:15:00 ]
UP系は関数から抜けたときにはソースのデータは破棄してOKなはず。
ようするに中でメモリ確保してコピーして保持してるって事だけどな。

335 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:21:21 ]
ハハ、DrawPrimitiveUPは
何時クラッシュするかわからない
ファイナルハゲマル丼的な関数というわけですね。
わかります。



336 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:23:18 ]
>IDirect3DDevice9::DrawPrimitiveUP に渡す頂点データは、呼び出しの後も保持する必要はない。
>MicrosoftR Direct3DR は、呼び出しから戻る前に、そのデータへのアクセスを完了する。

>>330の引用元の信用がガタッと減ったな



337 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:25:35 ]
MSDNの記事くらいは読もうよ。

>IDirect3DDevice9::DrawPrimitiveUP に渡す頂点データは、呼び出しの後も保持する必要はない。
>MicrosoftR Direct3DR は、呼び出しから戻る前に、そのデータへのアクセスを完了する。

338 名前:316 mailto:sage [2009/07/11(土) 14:27:54 ]
>>336
こりゃすまなかったな
引用元はよく使うGDevだ

しかし全コピーが発生するのは間違いないだろう

339 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:30:06 ]
>>336
だからこそUP系は遅いんだろ
>>318で既に出ているけど

340 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:30:50 ]
UP系は中でDYNAMICなバッファのプールに対してLOCK_DISCARDと
DrawPrimitiveを必要な数繰り返していると推測できる。

341 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:01:39 ]
>>340
その間制御を戻さないならば、CPU時間が減るし、
コピー後に制御を戻すとしても、メモリとコピー時間が無駄なわけだよね。

どう考えてもUP系の方が速くなるはずがないのだけど、
そもそも質問主以外にそんな結果の人はいるんですかね?いないなら不毛な気が・・・。

342 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:16:29 ]
昔、散々会社で似たような検証してたみたいだけど
結局、使い方が悪いだけで変わらない(まあ、当然かw)って結論が出てたなw

343 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:20:01 ]
だからといって、ある程度までの頂点数ならUP系でもほとんどペナルティーは無いわけだし、
種々のコンテナが使えるヒープメモリで間接的にレンダリング設定できるのはありがたい。
前作ったライブラリではUP系のみで実装した。

もっとも、現在製作中のライブラリは頂点バッファの確保/Lock込みで実装してしまったのでもう関係ない話だが……。

344 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:20:38 ]
>>341
たんなるベンチ風に測れば速度は変わらないでしょ。

UP系は同期関数でUPじゃないほうが非同期って考えれば
データ量が多くなってゲームなんかでCPUを使うようになれば差が出てくると思う。

3Dゲームで毎フレーム書き換える頂点データつったらエフェクトくらいしか思いつかないけど。

345 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:23:47 ]
2Dゲー作っててもたまに3Dゲーと同じような演出とかやりたいときあって
結局、UP系特化で作ったライブラリって開発してるとゴミになるぞ



346 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:37:54 ]
UP系大好きなお前らに悲しいお知らせです。

ttp://msdn.microsoft.com/ja-jp/library/cc627093(VS.85).aspx
>DrawPrimitiveUP と DrawIndexedPrimitiveUP はどうなったのですか。
>D3D10 で廃止されました。

347 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:16:24 ]
>>340で正解だな。加えて毎回バッファのプールを再作成していたような。
ロックで遅くなるってヤツは、メモリアクセス中にCPUとGPUがバッティングしたらどうすんの。
UP系だって結局中で同じことをせざるを得ない。UP系が未来の技術でない限りは。

しっかし100レス近くも費やす内容なのかねぇ

348 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:25:30 ]
>>347
まあ、とんちんかんなベンチレポとそれに賛同したり火消ししたりが延々と続いたからな。
ソースをさらしてれば話は早かったんだが。

349 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:48:56 ]
>>346
やっぱ、意味ないよねw

350 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:59:16 ]
>>344
変わらないならOKでしょ。むしろ速くなるっていうからさ。
まー質問主というより、無条件で賛同しちゃっている人が悪いな。

351 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 19:25:56 ]
自演だろ

352 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 20:55:16 ]
オンボ環境なら俺らが思ってるとおりの速さ順で、
GeForce9600GT下なら逆転する
って言ってるのだから、何かしらあるんだろ
面白い事象だと思うがねー

353 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:04:14 ]
それじゃあ俺クロシコの9600GT入れてるんですけどまずいっすねえ

354 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:05:35 ]
>>352
さすがにもう来ないでくれ

355 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:20:58 ]
結局のところ逆転現象が起こる理由について誰も指摘できないわけか



356 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:30:09 ]
ソースもexeもなしで何をどう説明できるんですか。

357 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:30:39 ]
だから言ったろうに、端からチラ裏レベルの情報なんだから相手にする必要なし

ソースコードも出せない怪しげな情報まき散らされると、
まともな初心者さんに迷惑なんですがねぇw

358 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:35:53 ]
みんなソースを出せと平気で言うけど
そんな簡単に出せるもんかね
誰も、使い捨てのテストプログラム作ってる訳じゃないでしょ
そこは、非難する部分じゃない

359 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:40:48 ]
>>358
三角プリミティブ表示にDirectDraw使ったら、D3Dと変わらなかったよ。
ソースは出せないけど、コードは絶対間違ってない!
なんでこんな結果になるか説明して。環境?もちろん俺環境だお!

360 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:41:43 ]
なんでもいいけどさあ
あんまり初心者っぽくない人多いよね

361 名前:358 mailto:sage [2009/07/11(土) 22:45:21 ]
>>359
同じ現象になる使い捨てのテストプログラム作って
そのソースとEXEをアップしろよ

362 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:51:41 ]
色々な要因が絡んでる場合、うまく抜粋してソース出せるとは限らんしな
それなりの報告とそれなりの信ぴょう性がありゃとりあえず「本当だとして」アドバイスするよ
それが気にくわないならレスしなきゃいい

363 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:52:40 ]
>>361
簡単に言わないでください。非難…批難イクナイ!!
ボクの計測結果ならいくらでも出します。ほらDirectDrawの方が速くなりました
なんでですか!

…という流れだな

364 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:55:38 ]
いずれにしろDirectX10ではなくなった。
DirectX11で復活することもないだろう。
過去のAPIの事はもういいじゃないか。

今からエンジン作るって人がDirectX9なんて選択しないし。

365 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:56:48 ]
後はゲ製でどうよ?IDもあるし
ttp://pc11.2ch.net/test/read.cgi/gamedev/1234296058/

遠慮する気があるなら質問者から移動してくれ
マジで機能しねぇぞ初心者スレがw



366 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:22:10 ]
別に他の質問のやりとりもあるし>>325-326
なんで機能しなくなるのかわからん

367 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:39:48 ]
正直流れ速いと質問しづらいよ

368 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:41:25 ]
>>364
え?2ヶ月前からDX9やり始めたんですけどDX10にしといた方がいいのかな?
持ってる本がDX9用だったんでつい・・・

369 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:45:00 ]
>>368
もちろん最先端を勉強するとかいう目的ならDX10や11のほうが良い
が、実用品を作る(売る同人ゲームとか)目的なら、古い枯れた技術のほうが良い
そもそも10にしたら、XPユーザー全切りだぜ?
過去のAPIの事は〜とか言っちゃう阿呆は気にしないでいいよ。このスレのタイトルすら読めないみたいだし

370 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:46:10 ]
しっかしとってつけたような質問だな

371 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:50:44 ]
10でも9でも好きなほうを使えばいい。
どっちみちWindows7が浸透するまで3年くらいはかかるだろうし。

372 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:51:20 ]
いくら自己レスでも、初心者にDirectX11の勉強を勧ってすげぇな

373 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:52:03 ]
そうだな・・・まあ興味本位でだから問題ないか
ところでボーンのアニメーションを作ってみたいんですけど
ID3DXAllocateHierarchy *p_AlllocHrachy;
ってやってD3DXLoadMeshHierarchyFromXで渡すとエラー出るんですけどなんでですか?
まさかこの辺は自分で作るんですか?

374 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:59:58 ]
そうだよ

375 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:02:05 ]
了解
調べてやってみます



376 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:04:15 ]
DirectX9を最初から勉強するならDirectX10を
最初からやるほうがはるかに簡単だけどな。

DirectX9は細かいルールを覚えていくのが面倒くさい。
一般に公開するなら断然DirectX9だけど。

377 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:23:50 ]
パーティクルの件でお騒がせしているものです
再現コードができましたのでUPしておきました

ttp://www1.axfc.net/uploader/File/so/26949
パス: particle
です。

中にソースとEXEが入っています。
描画方法をクラスでわけてあり、TypeAがUPを使った方。TypeBがロックして書きこむほうです。

起動するとそれぞれで1000回ほど描画を行い、それぞれのかかった時間をダイアログで表示します。
(1)がUP系、(2)がロックです。

GF9600GTでは下記の結果になります。なぜか後者のほうが断然遅い…。
(1) 2641 ms
(2) 4918 ms

きっとTypeBのほうに何か誤りがあるのだと思うのですが、アドバイスいただけると幸いです。
ちなみに>>328になるようにコードを書き直すと、だいたい同じくらいの速さになります。

378 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:27:52 ]
キーワードが正しくありません

379 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:30:15 ]
>>378
初心者スレ荒らして楽しい?ほんとに楽しい?

380 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:41:44 ]
マジネタだったのか

381 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:01:27 ]
MobilityRadeon9700だけど、
(1) 11849 ms
(2) 11959 ms

こっちは、ほぼ推測どおりの結果だね。



382 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:03:57 ]
エラー: このリンクは無効です。

が出るけど荒らし認定されるのかしら

383 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:05:06 ]
>>382
>>379

384 名前:382 mailto:sage [2009/07/12(日) 01:06:21 ]
試しにリロードしたら早速レスついているし
こいつはずっと張り付いているんだろうか…

385 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:57:02 ]
>>381は自演か



386 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 02:15:06 ]
つながりにくいんじゃない?
パスは通ったけど俺も全然ダウンロードできない。

387 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 02:19:26 ]
>>377
WRITEONLYで作った頂点バッファに対して読み取りアクセスしてるから遅いんだよ。
そこを修正したら、頂点バッファの方が速くなったよ。

388 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 03:49:19 ]
>>377
移動してよ…

389 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:33:53 ]
>>387
ありがとうございます。修正ができました。
代入しかしていないつもりでしたが、+=が実質参照していることに気が付けました。
WRITEONLYでも「読める」んですね…。

長々失礼しました。
一応言っておきますが、変なあおりレスとかはつけてません。こちらは質問させていただいている立場ですから。

390 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:48:16 ]
389です。
気になったので、D3DUSAGE_WRITEONLYの説明を調べてきました。

msdn.microsoft.com/ja-jp/library/cc324365.aspx
>この能力を使って作成された頂点バッファからの読み出しは失敗する

msdn.microsoft.com/ja-jp/library/dd188510.aspx
>このフラグを使用する頂点バッファからの読み出しでは、メモリ アクセス時間が非常に低速になることがある

どっちだよ!といった感じですが、結果を見るに後者のようですね。

391 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:57:10 ]
そもそもVRAMへのアクセスはAGPだと書き込みに対して読み込みが劇的に遅い。
PCIeで改善が図られているが、メインメモリに比べればやはり遅いのでやるべきではない。

392 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 09:10:33 ]
御苦労さん
結果を報告してくれる質問者はいつでも歓迎だぞ
やっぱム板こそID欲しいよなー

393 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:39:41 ]
まともな初心者さんに迷惑なんですがねぇ(笑)
さすがにもう来ないでくれ(笑)
自己レス(笑)
自演か(笑)
エラー: このリンクは無効です。(笑)


ほんとに屑が住み着いてるな
屑はさすがにもう来ないで欲しい

394 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:44:29 ]
ファイルが見つかりません

395 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:54:08 ]
このスレにクーラーが設置されました。

  r──────────┐
  | l王三王三王三王三l o==ニヽ
  | |王三王三王三王三|  .| //
  ゝ 乂━━━━━━━乂_| `-=
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  / /  / / / /  / /
 / /  /  / /  / /  ゴーゴー



396 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 11:24:06 ]
解決したからファイル消しちゃったのかな?

397 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:05:44 ]
DirectXSDKをインストールしてるなら
DirectXのControlPanelでランタイムをDebugRuntimeに設定できる。

そうするとWRITEONLYへの読み込みを行った場合に
ビデオカードやドライバに関係なくDirectX層でエラーを履いてくれるようになる。

世間に出すようなプログラムの場合は必ずDebugRuntimeでの動作確認をしましょう。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<251KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef