在OpenGL中渲染到纹理阵列的层



我使用OpenGL 3.2来渲染阴影贴图。为此,我构建了一个渲染到深度纹理的帧缓冲区。

要将纹理附加到帧缓冲区,我使用:

glFramebufferTexture2D( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, shdw_texture, 0 );

这很管用。渲染灯光视图后,我的GLSL着色器可以对深度纹理进行采样,以解决灯光的可见性问题。

我现在想解决的问题是,有更多的阴影贴图,比如说50个。在我的主渲染过程中,我不想从50个不同的纹理中采样。我可以使用图集,但我想知道:我可以将所有这些阴影贴图作为2D纹理阵列的切片传递吗?

那么,以某种方式创建一个具有DEPTH格式的GL_TEXTURE_2D_ARRAY,并将数组的一层绑定到帧缓冲区?

帧缓冲区是否可以通过纹理阵列层而不仅仅是深度纹理来支持DEPTH?

通常,您需要区分是要创建分层帧缓冲区(请参见分层图像(,还是要将多层纹理的单层附加到帧缓冲区。

使用glFramebufferTexture3D将3D纹理层(TEXTURE_3D(或阵列纹理附加到帧缓冲区,或使用glFramebufferTextureLayer将三维纹理层或阵列纹理层附加到帧缓冲器。在任何一种情况下,最后一个参数都指定纹理的layer

分层附件可以使用glFramebufferTexture进行连接。请参见分层渲染。

相关内容

  • 没有找到相关文章

最新更新