私はフレームごとに変化するフルスクリーンテクスチャの描画を高速化しようとしています。私のシステムでは、GDIとBitBlt()を使って約1000FPSを得ることができますが、Direct3Dと動的テクスチャを使用してパフォーマンスを向上させることができると考えました。代わりに私はわずか約250 FPSを取得しています。Direct3Dストリーミングテクスチャのパフォーマンスを向上させるにはどうすればよいですか?
私は現在のドライバを搭載したATI HD 4870を搭載したMac Proで動作しています。
私はダイナミックテクスチャを試してみましたが、それは私に小さな利得(〜15FPS)を与え、パイプラインのストールを避けるためにテクスチャチェーンを使ってみましたが効果がありません。
私はかなり見てきましたが、このようにダイナミックテクスチャを使用することについての情報はほとんどありません。
私には何か基本的なものがありませんか?
デバイスセットアップ:
pparams.BackBufferCount = 1; pparams.SwapEffect = D3DSWAPEFFECT_DISCARD; pparams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
テクスチャ作成:
device->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture, NULL);
テクスチャ更新:
texture->LockRect(0, &locked, NULL, D3DLOCK_DISCARD); ... write texture data texture->UnlockRect(0); device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, vertices, sizeof(*vertices)); ...
をあなたは http://www.libsdl.org/tmp/SDL-1.3.zip
から進行コードで仕事を得ることができますありがとう!
私は、ダイナミックなテクスチャを使用していなかった昔、フレームごとにDrawPrimitiveUPが1つしかないので、それは問題にはならなかった。ダイナミックなテクスチャにも大きな影響を与えますか? –
DrawPrimitiveUPが問題でない場合は、最大スピードアップを制限する各フレームのドライバオーバーヘッドがあると推測します。ベンチマークの各フレームで行われる作業を増やしてください。 –
さて、ありがとう、ありがとう! –