d3d10がレンダリングを終了するのを待つAPIを実装する必要がある機能を実装しています。 d3d10の後のテクスチャはバックバッファにうまく提示できます。このブラックボックスAPIを呼び出すことで、これは達成できると思うし、glfinish()のようなものになると思う。私は同期アクセスを実装するためにID3D10Queryクエリを使うことができると読んだ。d3d10コマンドが完了するのを待つAPIを実装する
D3D10_QUERY_DESC queryDesc;
... // Fill out queryDesc structure
ID3D10Query * pQuery;
pDevice->CreateQuery(&queryDesc, &pQuery);
pQuery->Begin();
... // Issue graphis commands, do whatever
pQuery->End();
UINT64 queryData; // This data type is different depending on the query type
while(S_OK != pQuery->GetData(&queryData, sizeof(UINT64), 0))
{
}
私はこの最初と最後の間にいくつかのダミーコマンドを入れますか?公開APIとしてこの機能を公開したいので、waitforgraphiscompletionという名前のものを
ここではダミーコマンドにする必要がありますか?
これは私にとって完璧な意味合いです。私はそれについて1つまたは2つの質問があります。 glFishSyncとglClientWaitSyncの違いは何ですか? D3D10に関しては、ID3D10Queryの終了を呼び出す必要があるだけです(つまり、開始を意味しません)、ID3D10Queryが作成されたデバイスですべてのコマンドが実行されるのを待ちますか? –
glFinishは、フレームバッファへの書き込みを含む、すべてのOpenGL操作が完了するのを待ちます。 glClientWaitSyncはそれを保証せず、glFenceSyncが完了する前に発行されたGLコマンドのみを保証します。これは通常、特定のテクスチャへのアクセスを同期しようとする場合には必要ありません。なぜなら、自分自身のレンダリングコードから読み書きされるタイミングを知る必要があるからです。 – MuertoExcobito
うーん、ありがとう –