1

ビデオ メモリにテクスチャがあり、このテクスチャ内のどこかに、特定の色の 1 つまたは複数のピクセルが隠されているとします。C++ では、この gltexture で関数を呼び出して、この色の存在を確認し、単純に true または false を返したいと考えています。これを行う最速の方法は何ですか?

4

1 に答える 1

4

最高のパフォーマンス/シンプルさの比率は、CPU にコピーを保持し、オプションで SSE を使用して各テクセルをテストすることだと思います。

OpenGL で行うこともできます。

  • テクスチャと同じサイズのレンダー ターゲットを作成する
  • その中のテクスチャのフルスクリーン レンダリングを実行します。つまり、各テクセルはレンダー ターゲットの 1 つのフラグメントと一致します。ファンシー テクスチャ サンプリングを無効にする
  • レンダリング時に、必要な色のテクセル以外のテクセルを破棄するシェーダーを使用します
  • オクルージョン クエリを使用して、レンダリングされたフラグメントの数をカウントします。

これのパフォーマンスについてはわかりませんが、GPU 側で最速になる可能性があります。このメソッドは高速ですが、ラグがあることに注意してください。通常、オクルージョン クエリの結果は 1 または 2 フレーム後にしか取得できません (ただし、ビジー状態で待機することもできます)。

于 2012-07-26T08:11:57.347 に答える