【发布时间】:2020-10-07 19:21:13
【问题描述】:
我正在尝试将顶点乘以投影矩阵,并使用单位矩阵对其进行测试。 当我对身份进行硬编码时,生成的图像不会像预期的那样改变
#version 330 core
layout(location = 0) in vec position;
void main() {
gl_Position = glm::mat4(1.0f) * vec4(position, 1.0f);
}
但是,当我将单位矩阵作为统一加载时,顶点会消失。
glm::mat4 model = glm::mat4(1.0f);
GLuint ID = glGetUniformLocation(shaderProgram.ID, "model");
glUniformMatrix4fv(ID, 1, GL_FALSE, &model[0][0]);
和着色器:
#version 330 core
layout(location = 0) in vec position;
uniform mat4 model;
void main() {
gl_Position = model * vec4(position, 1.0f);
}
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
您很可能错过了在设置矩阵统一之前安装程序 (
glUseProgram)。glUniform*为当前程序对象指定一个统一变量的值 -
...你为什么要在 GLSL 中使用 GLM 类型?你有一些时髦的 GLSL 预处理吗?
标签: opengl glsl shader vertex-shader