レイヤード レンダリングでは、2D テクスチャ配列 (GL_TEXTURE_2D_ARRAY) を作成することを読みました。
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D_ARRAY, TextureColorbufferName);
glTexParameteri(....
glTexImage3D(...
FBO にアタッチできます。
glGenFramebuffers(1, &FramebufferName);
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, TextureColorbufferName, 0);
視覚的に理解するのが難しいのは、FBO でテクスチャのレイヤーを単一の色のアタッチメント ポイントにバインドする方法です。カラーアタッチメント 0 (または GL_COLOR_ATTACHMENTi のいずれか) は、それ自体が単一の「イメージ」ではありませんか?
さらに詳細に:
テクスチャ配列について読む前に、これが私の FBOS の理解でした。
+--------------+
+-----------+| FBO object ++--------------------------------------------+
| | +---------------------+ |
| +--------------+ | |
| + | |
| | | |
| | | |
v v v v
+-----------------+ +-----------------+ +-----------------+ +------------------+
|color attachment | |color attachment | |depth attachment | |stencil attachment|
| 0 | | 1 | | | | |
+-----------------+ +-----------------+ +-----------------+ +------------------+
(this too)
(this is actually (this is also a (this too)
one texture or texture of renderbuffer)
one renderbuffer)
しかし、テクスチャ配列について読んだ後、これは本当にそうなのですか?
+--------------+
+-----------+| FBO object ++--------------------------------------------+
| | +---------------------+ |
| +--------------+ | |
| + | |
| | | |
| | | |
v v v v
+-----------------+ +-----------------+ +-----------------+ +------------------+
|color attachment | |color attachment | |depth attachment | |stencil attachment|
| 0 | | 1 | | | | |
+-----+--+------+-+ +-----------------+ +-----------------+ +------------------+
| | |
| | v+
| v+ +----------------------------------+
| +--------->+ v
v | +
+----------------+ +---v-------------+ |
| | | | +---v------------+
|texture array[0]| |texture array[1] | |texture array[n]|
| | | | | |
| | | | | |
| | | | | |
+----------------+ +-----------------+ +----------------+
つまり、各アタッチメント自体がさまざまなテクスチャのコレクションですか?
これは、1 つのカラー アタッチメント ポイントが複数のテクスチャにどのようにマッピングされるかを視覚化するのが難しいです。
1 つの FBO (texture_2d_array にバインドされているもの) から別の FBO (texture_2d_array にバインドされているもの) にブリットするとどうなりますか