1
我正在嘗試做一個簡單的3D引擎,但我把我的頭髮徘徊,爲什麼我不能改變一個小3d線的顏色。以下的作品,但總是呈現白色。我試圖讓它吸取綠色:Opengl GSL glUniform4fv顏色無法正常工作
...
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和我不明白的答案。他是指多個着色器?我只使用一個着色器。
上帝全能。我很愚蠢,甚至沒有看到「矩陣」關鍵字的區別。謝謝一堆。 – user3473422