【发布时间】:2024-01-01 08:19:02
【问题描述】:
我正在使用 OpenGL 进行我的第一步,目前无法将一些转换发送到我的顶点着色器。当我使用以下着色器程序时,一切正常,我可以看到我的对象(一个简单的三角形):
layout (location = 0) in vec3 aPos;
void main()
{
gl_Position = vec4(aPos, 1.0);
}
在下一步中,我更改了着色器程序以接受来自外部的转换:
layout (location = 0) in vec3 aPos;
uniform mat4 inputTransform;
void main()
{
gl_Position = inputTransform * vec4(aPos, 1.0);
}
...以及我将转换数据发送到着色器的主循环:
unsigned int transformLoc = glGetUniformLocation(shaderProgram,"inputTransform");
glUseProgram(shaderProgram);
GLfloat trans[4] = {1.0, 0.0, 0.0, 1.0};
glUniformMatrix4fv(transformLoc, 1, GL_FALSE,trans);
现在我的三角形消失了,因为应用了一些非常无效的转换。 “shaderProgram”中的值是正确的,它可以在之前调用片段着色器时正常工作。我也没有收到任何着色器程序的编译错误。
那么知道这里可能出了什么问题吗?
【问题讨论】:
标签: opengl glsl shader vertex-shader opengl-3