私は、現在のGLテクスチャ名がキャッシュされているサンプルコード(特にiOS GLプロジェクト)と、glBindTextureを呼び出す前に比較が行われていることを確認しました。目標は、glBindTextureへの不要な呼び出しを避けることです。OpenGL - glBindTexture - 早すぎる最適化ですか?
if (textureName != cachedTextureName) {
glBindTexture(GL_TEXTURE_2D, textureName);
cachedTextureName = textureName;
}
このアプローチでは、glBindTextureへのすべての呼び出しを同様に、できればラッパーを使用して処理する必要があります。しかし、サードパーティのコードを含めると、この問題が発生するだけでなく、であることがわかります。を覚えておいてください。
これは便利な最適化ですか?または、OpenGLの実装は、テクスチャ名が変更されていないglBlindTextureへの呼び出しを無視するほどスマートですか?
ありがとうございました。
ありがとうございます。私の自然な傾向はそれを包むことですが、キャッシュされた状態を使わずにglBindTextureを呼び出すサードパーティコードの問題があります。 – SirRatty
理想的な状況は、OpenGLにリンクしているライブラリにコードをラップすることであり、ライブラリの呼び出し元が意図的にコンテキストを取得してOpenGL関数を呼び出さないことを前提としています。悲しいかな、これは必ずしも実現可能なわけではないので、OpenGLの状態マシンとその弱点で暮らさなければなりません。 –