OpenGLと多くのイメージ/ビデオフォーマットは、ピクセルデータの原点が異なります。したがって、OpenGLを使用してイメージ(特にカメラからのライブイメージ)を描画する場合、次のオプションがあります。OpenGLテクスチャメモリのレイアウトとルックアップの速度
- イメージを(CPUで)反転してからGPUにアップロードし、正常に描画します。 GPUに直接
- アップロードと反転したテクスチャを使用して描画今すぐ
を調整し、それは無料ではありませんので、私は画像を反転させたくない(処理コスト)と、私たちは中に次のいずれかを実行する必要があるかもしれません私たちは、CPU上の画像を使用し続ける場合:
- は、新しい画像バッファを割り当てる - >この新しいバッファに反転 - > GPUにアップロード - >その場で新しいバッファ
- フリップ画像を解放 - > GPUにアップロード - >再び元の場所に戻す
どちらもメモリと処理能力が余分に使用されます。 (私は最初のケースでは新しいバッファが一度割り当てられますが、それでもメモリを消費し、CPU上でフリップされます) 。私はこれがもっと速いアプローチだと聞いていますが、フリップされたテクスチャ座標を与えるとき、GPUがどのくらい速くテクスチャにアクセスするかは誰にも触れません。今日では、多くのコンピュータ(ラップトップ)がシステムメモリを使用するGPUを統合しています。テクスチャのルックアップの速度は、テクスチャの座標を与える方法によって影響を受けませんか?
要約すると、私の質問は、GPUメモリのテクスチャの実際のレイアウトに応じて、テクスチャのルックアップとフィルタリングの速度が変わるのでしょうか? NVIDIAのような専用のGPUと、Intelのような統合されたGPUの両方でこのことを知りたいと思います。
PS:これは純粋に教育目的のためのものですが、私はこの質問に対する答えがアプリケーションのパフォーマンスにはあまり重要ではないことを認識していますが、内部的な知識は常に得意です。また、私は好奇心です:)
まず、OpenGLを使用しているときは、このようなことを前提にしないでください。ここでは常識を適用しない理由は何もありません(キャッシュにやさしく、帯域幅の使用を最小限に抑えようとしています)。しかし、GLSLの特定の部分がすべてのサポートハードウェアで同じように実行されるとは決して言いません。次に、アプリケーションのパフォーマンスがどのように重要であるか、テクスチャでどのような処理を行っているかについて、十分な情報を提供しません。あなたが複雑さを理由に考えることができないなら、テックスコードを反転させることによる推定された影響から始めるのはなぜですか? – thokra
これは私のアプリケーションに関するものではありません。 (2)とにかくすべてのケースでより速いです、私はそれをさらに速くしようとしていません。これは教育目的のためのものでした。これを述べるための質問を編集しています。ありがとうございます。 – Alparslan