WebGL渲染缓冲区从着色器接收偏斜的像素值

时间:2012-01-23 23:10:54

标签: glsl opengl-es-2.0 shader webgl glblendfunc

我正在将多边形场景渲染到多个渲染目标,以便我可以执行后处理效果。但是,我在片段着色器中设置的值似乎没有准确地反映在像素着色器中。

现在管道看起来像这样:

  • 渲染基本多边形(使用下面的简单着色器)到中间缓冲区
  • 将缓冲区渲染为屏幕大小的四边形到屏幕。

我正在使用WebGL Inspector(http://benvanik.github.com/WebGL-Inspector/)查看中间缓冲区(使用gl.createFrameBuffer()创建)。

绘制多边形时,我有一个非常简单的片段着色器,如下所示:

gl_FragColor = vec4(1, 0, 0, 0.5);

这是在我的抽奖电话之前:

gl.disable(gl.BLEND);

我希望这能在缓冲区中创建一个精确(255,0,0,128)的像素,但事实上,它会创建一个值为(255,0,0,64)的像素 - 是预期的一半阿尔法。

这个程序相当庞大而且很好,所以如果答案不是很明显的话,我会用具体细节更新帖子。

谢谢!

1 个答案:

答案 0 :(得分:1)

您是否将premultiplyAlpha设置为true?摆弄它是第一个想到的东西:奇怪的alpha值。