【发布时间】:2013-02-24 21:59:59
【问题描述】:
我总共有 5 个渲染目标。我使用相同的着色器写入前 4 个,然后在单独的通道中写入最后一个。
在调用渲染到前 4 个目标之前,我调用:
GLenum drawBuffers[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3};
glDrawBuffers(4, drawBuffers);
但是,当我调用它进行第二遍并且只想写入最后一个,即第 5 个目标时,为什么下面会给出奇怪的结果?
GLenum drawBuffers[] = { GL_COLOR_ATTACHMENT4 };
glDrawBuffers(1, drawBuffers);
为什么我必须改为使用:
GLenum drawBuffers[] = { GL_NONE, GL_NONE, GL_NONE, GL_NONE, GL_COLOR_ATTACHMENT4 };
glDrawBuffers(5, drawBuffers);
这仅仅是 glDrawBuffers() 的工作原理,还是由其他原因引起的?
编辑:关于 Jarrods 评论的固定代码
【问题讨论】:
标签: c++ opengl rendering textures fbo