在GLSL的其他一些版本中,gl_BackColor似乎提供了对当前渲染片段背后颜色的访问。这对于一些自定义alpha混合很有用。但是glsl for webgl似乎不支持它。另一方面,阅读从gl_FragColor中分配任何值之前,似乎得到了正确的backColor,但只适用于我的Ubuntu.On我的Mac Book Pro,它失败了,似乎只得到一些无用的随机颜色。
所以我的问题是,是否有任何直接方法可以访问当前渲染片段后面的backColor?如果没有,我该怎么办?
答案 0 :(得分:1)
在其他版本的GLSL中,gl_BackColor似乎提供了对当前渲染片段背后颜色的访问。
不,从未如此。 gl_BackColor
是背面颜色,用于进行双面照明。从片段着色器中可以访问永远;它是一个顶点着色器变量。
对于双面照明,您在顶点着色器中写入了gl_FrontColor
和gl_BackColor
。片段着色器的gl_Color
变量用任何一面的颜色面向相机填充。因此,如果三角形的背面是向前的,那么它将得到插值的gl_BackColor
。
你要求的是从未在GLSL中可用。
答案 1 :(得分:1)
没有直接的方法,正如Nicol Bolas写的那样。
但是,您可以使用间接方式,使用渲染到纹理方法:
如果需要渲染多个透明对象,可以使用两个屏幕外纹理并在它们之间打乒乓,最后在渲染完所有对象后将结果渲染到屏幕上。