【发布时间】:2014-03-29 01:10:18
【问题描述】:
我正在尝试做一个简单的 3D 引擎,但我正在纠结为什么我不能改变一点 3D 线的颜色。以下工作但始终呈现白色。我试图让它画成绿色:
...
float color[4] = { 0.5f, 1.0f, 0.0f, 1.0f };
glUseProgram( shader.id );
//I ommitted the model matrix and stuff because it works fine
glUniformMatrix4fv( glGetUniformLocation( shader.id, "color" ), 1, GL_FALSE, color );
glBegin( GL_LINES );
glVertex3f( x, y, z );
glVertex3f( x, y+10, z );
glEnd();
...
顶点着色器:
#version 330
in vec3 vertexPosition_modelspace;
uniform mat4 mvp;
void main(){
vec4 v = vec4(vertexPosition_modelspace,1);
gl_Position = mvp*v;
}
片段着色器:
#version 330
uniform vec4 color = vec4(1.0,1.0,1.0,1.0);
out vec4 frag;
void main(){
frag = color;
}
我读过一些文件说有时制服会被优化并变得不可见,但事实并非如此,因为我使用制服来选择像素的颜色。 glGetUniform 的返回值也是 (0),它是有效的,因此它存在。那么为什么会搞砸呢?我的司机死了吗?
唯一其他相关或类似的问题来自GLSL Shader will not render color from uniform variable,我不明白的答案。他是什么意思多个着色器?我只使用一个着色器。
【问题讨论】: