我想使用分层图像(分辨率为 10-1000 z 的 3D 纹理)作为帧缓冲区的纹理。我通过以下方式设置帧缓冲区的纹理:
glGenTextures(1, &textureName);
glBindTexture(GL_TEXTURE_3D, textureName);
glTexStorage3D(GL_TEXTURE_3D, 1, GL_R32F, width, height, depth);
glBindTexture(GL_TEXTURE_3D, 0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureName, 0);
然后我在几何着色器中为图层创建几何
void main() {
for (int layer = 0; layer < textureDepth; ++layer) {
gl_Layer = layer;
//generate and emit vertices
EndPrimitive();
}
}
对于较小的纹理深度(例如 10),这似乎可行,但对于较大的数字,结果似乎是错误的。有很多地方可能会出错,所以我想确保这是有效的。
- 我设置正确吗?
- 我必须查询的层数是否有限制 (
glGetInteger
)? - 您对将高度分层的图像作为帧缓冲区的性能有任何经验吗?
请注意,我的主要问题是缺乏有关此主题的信息。文档非常短,非立方体贴图分层图像的部分更短。我会很高兴任何涵盖该主题的教程(不是立方体贴图问题)。