0

テクスチャ FBO の描画中にテクスチャ オブジェクトをレンダリングできるかどうかは誰にもわかりませんか? たとえば、テクスチャ ティーポットのレンダリングを示す FBO/テクスチャを生成したいと考えています。これは、ティーポットの鏡面反射を示すために使用できます。

何度か試してみましたが、常に非表示のオブジェクトが返されます。FBO/テクスチャには、線やその他のテクスチャのないシェーディング オブジェクトが表示されますが、テクスチャのあるオブジェクトは表示されません。変...

-- 同じシーンをメイン フレーム バッファに直接描画すると問題なく動作します。テクスチャーのあるオブジェクトとテクスチャーのないオブジェクトは正常にレンダリングされます。

-- レンダリング先のテクスチャ ID が、FBO/テクスチャの生成時に使用されません。したがって、循環バインディングはありません。

-- glGetError は glDrawElements の後にエラーを返さないので、それは問題の原因ではありません。

-- テクスチャ座標は正しいです。

-- 私のグラフィック カード (Intel x3100) は確かに Mac OS-X 10.6.7 で OpenGL 2.0 をサポートしており、FBO サンプル プログラムは正常に動作します (ただし、テクスチャリング機能はありません)。

これはおそらく本当に単純なものですが、私はそれを見つけることができません...


それが不可能な場合、これを行うための推奨される方法は何ですか? シェーダーで?これには何らかの形のマルチテクスチャリングが必要ですか?

4

1 に答える 1

1

FBO は他のレンダー ターゲットとは方法が異なるため、テクスチャリングは問題なく機能します。唯一の理由は、テクスチャ ユニットの一部がまだ FBO アタッチメントによって詰まっている可能性があるためです。FBO は、同時にレンダー ターゲットとテクスチャリング ソースになることはできないため、OpenGL がこれを可能性があると判断した場合、奇妙なことが起こる可能性があります。

FBO をテクスチャとして使用することを確認してください。最初に、FBO とそのアタッチメントを、それが使用されているすべてのテクスチャ ユニットからアンバインドしてから、FBO をレンダリング ドロー バッファとしてバインドする必要があります。

FBO への描画が終了したら、まずレンダー バッファー ターゲットとしてバインドを解除し、それを使用するテクスチャリング ユニットにバインドします。

于 2011-05-06T09:04:10.173 に答える