zyn*_*dor 3 opengl shader glsl
以下简单的片段着色器代码失败,在日志中留下了一条无信息的消息:
ERROR: 0:1: 'gl_Color' : syntax error syntax error
void main()
{
vec4 myOutputColor(gl_Color);
gl_FragColor = myOutputColor;
}
Run Code Online (Sandbox Code Playgroud)
而以下一个有效:
void main()
{
glFragColor = gl_Color;
}
Run Code Online (Sandbox Code Playgroud)
这令人难以置信,就像在Lighthouse3D的教程中一样, gl_Color被认为是一个vec4.为什么我不能将它分配给另一个vec4?
尝试正常分配.像这样:
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
第二个答案实际上是正确的,但是没有必要使用vec4()构造函数,因为两者的类型相同.如果你曾经说过(r,g,b,w)元组你可以写:
vec4 myOutputColor = vec4(r, g, b, w);
Run Code Online (Sandbox Code Playgroud)
要么
// assuming myRgbColor is a vec3
vec4 myOutputColor = vec4(myRgbColor, w);
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
5462 次 |
| 最近记录: |