gpt4 book ai didi

c++ - Opengl GSL glUniform4fv 颜色不起作用

转载 作者:行者123 更新时间:2023-11-30 04:06:55 25 4
gpt4 key购买 nike

我正在尝试做一个简单的 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和我不明白的答案。他是什么意思多个着色器?我只使用一个着色器。

最佳答案

你在应该使用 glUniform4fv 时使用了 glUniformMatrix4fv(因为 colorvec4,而不是 mat4 )。

鉴于此,在有疑问时始终检查 glGetError() 状态。更好的是,使用 KHR_debug 扩展。

在检查代码中的所有内容之前,不要假设驱动程序中有错误 :-)。这是极其罕见的情况。

关于c++ - Opengl GSL glUniform4fv 颜色不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com