0

コードの別の部分によって作成されたテクスチャがあります(QT5のbindTextureを使用していますが、これは関係ありません)。

このテクスチャが頻繁に更新されるというOpenGLヒントを設定するにはどうすればよいですか?

    glBindTexture(GL_TEXTURE_2D, textures[0]);
    //Tell opengl that I plan on streaming this texture
    glBindTexture(GL_TEXTURE_2D, 0);
4

2 に答える 2

0

テクスチャが繰り返し更新されることを示すメカニズムはありません。これは、 usageパラメーターを介してバッファー(VBOなど)にのみ関連します。ただし、2つの可能性があります。

  1. テクスチャをフレームバッファオブジェクトとしてアタッチし、そのように更新します。それはおそらくあなたが求めていることをするための最も効率的な方法です。テクスチャに関連付けられたメモリはGPUに常駐し、レンダリング速度で更新できます。
  2. Qtが生成されたテクスチャを書き込むバッファとしてピクセルバッファオブジェクト(一般にPBOと呼ばれ、OpenGLバッファタイプは)を使用してみて、GL_PIXEL_UNPACK_BUFFERそのバッファをとしてマークしGL_DYNAMIC_DRAWます。glTexImage*D()更新ごとにPBOのバッファオフセット(つまり、おそらくゼロ)を使用して呼び出す必要がありますが、このアプローチでは、を介してパイプにテクセルを直接ブラストするよりも効率が高くなる可能性がありglTexImage*D()ます。
于 2013-02-18T23:39:10.890 に答える
0

そのようなヒントはありません。OpenGLは、パフォーマンスではなく機能を定義します。必要なときにいつでもアップロードしてください。

于 2013-02-18T23:39:12.583 に答える