双重融合 - Radeon的问题

时间:2015-02-13 09:28:35

标签: opengl framebuffer fragment-shader

我正在尝试编写一个使用双源混合的着色器。 nVidia的一切都运行良好,但在Radeon 7800上失败了(最新的驱动程序--14.12)。 我的GLSL着色器:

layout ( location = 0 ) out vec3 O_RT0 ; 
layout ( location = 1 ) out vec3 O_RT1 ; 
void main()
{
    //filling O_RT0 and O_RT1 with some data
}

在这个阶段,我有一个带有一个颜色附件的FBO并打电话给我 glDrawBuffers,输出数为1,GL_COLOR_ATTACHMENT0为目标。

我正在使用以下混合功能:src = GL_ONE, dst = GL_SRC1_COLOR, src_alpha = GL_ONE, dst_alpha = GL_ONE

还有https://www.opengl.org/wiki/Blending#Dual_Source_Blending说我应该使用index关键字绑定输出: layout(location = 0, index = 0) out vec4 outputColor0; layout(location = 0, index = 1) out vec4 outputColor1;

没有用。 AMD的搜索结果与nVidia相似,但有以下blendfunc:src = GL_ONE, dst = GL_ZERO, src_alpha = GL_ONE, dst_alpha = GL_ZERO

所以我认为第二次输出会发生错误。

两张卡都支持扩展GL_ARB_blend_func_extended。 他们还会返回GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 1

我认为这个问题是绑定输出的地方。调用glDrawBuffers(1,GL_COLOR_ATTACHMENT0)是否可能被解释为"忽略它:( location = 1 ) out vec3 O_RT1"导致与src1 ==零混合?

0 个答案:

没有答案