【发布时间】:2018-02-07 15:44:20
【问题描述】:
我创建了一个离屏帧缓冲区并向其中添加了两个渲染目标。
每个渲染目标都有自己的混合模式。我设置为glBlendFunci:
glBlendFunci(accum->buffId, GL_ONE, GL_ONE);
glBlendFunci(revealage->buffId, GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
帧缓冲区是否存储这种混合模式?因为它特定于缓冲区。我应该在每一帧中设置它还是只在初始化代码中设置它?
屏幕外帧缓冲区也不会写入深度,所以我通过glDepthMask(GL_FALSE); 禁用了它,但它似乎是全局状态而不是帧缓冲区状态。
我不知道帧缓冲区存储了多少或哪些状态。特别是我想知道关于帧缓冲区附件的这些状态:
- glBlendFunci
- glBlendFunc
- glEnable(GL_BLEND)
- glEnable(GL_DEPTH_TEST)
- glDepthMask
帧缓冲区是否存储任何这些状态?如果您愿意分享,我也想知道其他州。
我知道 VAO 对象存储了一些关于顶点属性的状态,所以我想也许帧缓冲区也存储了一些与其附件相关的状态
编辑:我更新了 glBlendFunci 参数以使用绘制索引,我使用的是 bufferId/objectId
glBlendFunci(accum->drawIndex, GL_ONE, GL_ONE);
glBlendFunci(revealage->drawIndex, GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
【问题讨论】:
标签: opengl framebuffer