1

VBO を使用してウェーブフロント (.obj) ローダーをコーディングしています。

「usemtl」が呼び出されたときに、頂点、texCoord、法線データと一緒に textureID を送信することを考えています。

そのテクスチャ ID を使用して、glBindTexture を呼び出さずに頂点/フラグメント シェーダ内のテクスチャをバインドできますか?

4

2 に答える 2

2

そのテクスチャIDを使用して、glBindTextureを呼び出さずに頂点/フラグメントシェーダー内のテクスチャをバインドできますか?

いいえ。テクスチャはシェーダーにバインドされていません。それらはコンテキストにバインドされています。

技術を習得したい場合は、NV_bindless_textureでそのような機能を使用できますが、これはNVIDIA固有です。

于 2013-01-13T03:42:31.760 に答える
1

これは一般的なマテリアルの問題であり、ジオメトリをレンダリングする前に切り替える必要があります。

最も簡単な方法は次のとおりです。

foreach object in renderQueue
    set_material()
    draw_geometry()

もちろん、1つのオブジェクトを2つの異なるマテリアルでレンダリングする必要がある場合、いくつかの問題が発生します。もう1つの問題はパフォーマンスにあります。通常、オブジェクトをマテリアルで並べ替えて、(テクスチャ、シェーダー、その他のデータの)切り替えを保存します。

于 2013-01-13T10:36:12.777 に答える