作成するすべてのレンダーバッファに対してフレームバッファを生成してバインドする必要がありますか?または、renderbufferのみを作成する(そしてそれをテクスチャにマップするか、何らかの方法でsahderに送信する)機会はありますか?
後で使用するためのマスクを作成するために、1つのチャネルバッファにレンダリングしたいだけです。完全なフレームバッファを設定することは、このタスクのオーバーヘッドになると思います。
ありがとう。
作成するすべてのレンダーバッファに対してフレームバッファを生成してバインドする必要がありますか?または、renderbufferのみを作成する(そしてそれをテクスチャにマップするか、何らかの方法でsahderに送信する)機会はありますか?
後で使用するためのマスクを作成するために、1つのチャネルバッファにレンダリングしたいだけです。完全なフレームバッファを設定することは、このタスクのオーバーヘッドになると思います。
ありがとう。
レンダーバッファは単なる画像です。1つをテクスチャとしてバインドすることはできません。テクスチャとして使用する画像を作成する場合は、テクスチャを作成する必要があります。そのため、レンダーバッファとテクスチャがあります。そのうちの1つは、読み取るつもりのないもののためのものです。
フレームバッファは画像のコレクションです。レンデバッファまたはテクスチャにレンダリングすることはできません。フレームバッファにレンダリングします。フレームバッファ自体には、レンダーバッファやテクスチャがアタッチされている必要があります。
デフォルトのフレームバッファまたはフレームバッファオブジェクトのいずれかにレンダリングできます。デフォルトのフレームバッファ内の画像は、テクスチャとして使用できません。したがって、テクスチャにレンダリングする場合は、フレームバッファオブジェクトを使用する必要があります。これがOpenGLの仕組みです。
「完全なフレームバッファの設定」にはオーバーヘッドが伴う場合がありますが、テクスチャにレンダリングする場合は、それを行う必要があります。
代わりにステンシルバッファを使用して、出力をマスクする準備ができるまでステンシルテストを無効にすることができます。
編集: openglドキュメントで次の呼び出しを見てください:
glClearStencil
glClear(GL_STENCIL_BUFFER_BIT)
glEnable(GL_STENCIL_TEST)
glDisable(GL_STENCIL_TEST)
glStencilFunc
glStencilOp
http://www.opengl.org/sdk/docs/man/xhtml/glStencilFunc.xml
http://www.opengl.org/sdk/docs/man/xhtml/glStencilOp.xml
http://developer.nvidia。 com / system / files / akamai / gamedev / docs / stencil.pdf?download = 1