ビデオ メモリにテクスチャがあり、このテクスチャ内のどこかに、特定の色の 1 つまたは複数のピクセルが隠されているとします。C++ では、この gltexture で関数を呼び出して、この色の存在を確認し、単純に true または false を返したいと考えています。これを行う最速の方法は何ですか?
質問する
101 次
1 に答える
4
最高のパフォーマンス/シンプルさの比率は、CPU にコピーを保持し、オプションで SSE を使用して各テクセルをテストすることだと思います。
OpenGL で行うこともできます。
- テクスチャと同じサイズのレンダー ターゲットを作成する
- その中のテクスチャのフルスクリーン レンダリングを実行します。つまり、各テクセルはレンダー ターゲットの 1 つのフラグメントと一致します。ファンシー テクスチャ サンプリングを無効にする
- レンダリング時に、必要な色のテクセル以外のテクセルを破棄するシェーダーを使用します
- オクルージョン クエリを使用して、レンダリングされたフラグメントの数をカウントします。
これのパフォーマンスについてはわかりませんが、GPU 側で最速になる可能性があります。このメソッドは高速ですが、ラグがあることに注意してください。通常、オクルージョン クエリの結果は 1 または 2 フレーム後にしか取得できません (ただし、ビジー状態で待機することもできます)。
于 2012-07-26T08:11:57.347 に答える