Three.js - GPU ping-ponging 时设置不同的清除颜色
Three.js - set different clear color when doing GPU ping-ponging
尝试在 Three.js 中使用 GPU ping-ponging 实现一些东西,我 运行 遇到了一个奇怪的问题,即为渲染器设置清晰颜色似乎覆盖了片段着色器的输出负责渲染。
如果我将清晰颜色设置为白色,像素就会变成白色。如果我将其保留为默认的黑色,则像素会正确着色。
如果不需要,我宁愿不画飞机。
我不确定这是 Three.js 特定的东西还是它是 OpenGL ES2 固有的,因为我确实尝试直接设置清晰颜色 (render.getContext().clearColor(1.0 ,1.0,1.0,1.0) ) 但结果相同。
非常感谢任何帮助或指点!
如果启用混合,背景颜色会影响您的渲染。如果不需要混合,请将其禁用:
glDisable(GL_BLEND);
如果您确实需要混合,事情可能会变得稍微复杂一些。一些最常用的混合函数,比如曾经流行的:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
适用于任何背景颜色。例如,使用此混合函数,如果您在白色背景上渲染不透明的红色(片段的 alpha = 1.0),您仍然会变成红色。
其他一些混合函数只能在黑色背景上使用。例如,如果您使用加法混合:
glBlendFunc(GL_ONE, GL_ONE);
在白色背景上渲染任何内容只会使其保持白色。好吧,因为它增加了白色,所以它会是 "whiter than white",但这只适用于洗衣粉广告。 :)
请注意,上面的代码行适用于 C/C++ OpenGL 绑定。我希望他们能轻松翻译成 WebGL/Three.js.
要设置 three.js 渲染器清除的颜色,请使用:
renderer.setClearColor ( color, alpha )
http://threejs.org/docs/#Reference/Renderers/WebGLRenderer
为了从上面的答案中进行低级调用,在 three.js 中执行此操作:
myMaterial.transparent = false;
Three.js 将在即将绘制此对象时发出正确的调用。
尝试在 Three.js 中使用 GPU ping-ponging 实现一些东西,我 运行 遇到了一个奇怪的问题,即为渲染器设置清晰颜色似乎覆盖了片段着色器的输出负责渲染。
如果我将清晰颜色设置为白色,像素就会变成白色。如果我将其保留为默认的黑色,则像素会正确着色。
如果不需要,我宁愿不画飞机。
我不确定这是 Three.js 特定的东西还是它是 OpenGL ES2 固有的,因为我确实尝试直接设置清晰颜色 (render.getContext().clearColor(1.0 ,1.0,1.0,1.0) ) 但结果相同。
非常感谢任何帮助或指点!
如果启用混合,背景颜色会影响您的渲染。如果不需要混合,请将其禁用:
glDisable(GL_BLEND);
如果您确实需要混合,事情可能会变得稍微复杂一些。一些最常用的混合函数,比如曾经流行的:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
适用于任何背景颜色。例如,使用此混合函数,如果您在白色背景上渲染不透明的红色(片段的 alpha = 1.0),您仍然会变成红色。
其他一些混合函数只能在黑色背景上使用。例如,如果您使用加法混合:
glBlendFunc(GL_ONE, GL_ONE);
在白色背景上渲染任何内容只会使其保持白色。好吧,因为它增加了白色,所以它会是 "whiter than white",但这只适用于洗衣粉广告。 :)
请注意,上面的代码行适用于 C/C++ OpenGL 绑定。我希望他们能轻松翻译成 WebGL/Three.js.
要设置 three.js 渲染器清除的颜色,请使用:
renderer.setClearColor ( color, alpha )
http://threejs.org/docs/#Reference/Renderers/WebGLRenderer
为了从上面的答案中进行低级调用,在 three.js 中执行此操作:
myMaterial.transparent = false;
Three.js 将在即将绘制此对象时发出正确的调用。