首页 > 解决方案 > 使用单位矩阵的坐标不起作用

问题描述

基本上我为顶点着色器提供了一个识别矩阵,但由于某种原因它不起作用。

这是我的 C++ 代码:

glm::mat4 trans;
GLuint transformLoc = glGetUniformLocation(program, "transform");
glUniformMatrix4fv(transformLoc, 1, GL_FALSE, glm::value_ptr(trans));

我在做这个之后glUseProgram()

这是我的顶点着色器代码:

#version 330 core

layout (location = 0) in vec3 position;
layout (location = 1) in vec3 inColor; 
layout (location = 2) in vec2 texCoord; 

out vec3 ourColor;
out vec2 ourTextCoord;

uniform mat4 transform;

void main()
{   
    gl_Position = transform * vec4(position, 1.0f);
    ourTextCoord = texCoord;
    ourColor = inColor;

};

gl_Position = vec4(position, 1.0f)工作正常,但将它与识别矩阵相乘不起作用......

编辑:我看到的只是黑屏。

标签: c++openglglm-math

解决方案


0.9.9.0 开始, GLM 不再默认初始化(或任何初始化!)默认构造的向量/矩阵。

您可以#define GLM_FORCE_CTOR_INIT#includeing GLM 之前恢复旧的行为。


推荐阅读