C++ OpenGL转换无法使用GLM矩阵

C++ OpenGL转换无法使用GLM矩阵,c++,opengl,glsl,C++,Opengl,Glsl,我正在使用learnopengl教程学习OpenGL,并在“转换”一章中学习。我理解他所做的一切以及背后的理论(数学)。但在尝试练习时,我的对象没有显示我复制了他的代码并粘贴了它,但仍然没有任何更改 这是我的顶点着色器: #version 330 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; out vec2 TexCoord; uniform mat4 transform;

我正在使用learnopengl教程学习OpenGL,并在“转换”一章中学习。我理解他所做的一切以及背后的理论(数学)。但在尝试练习时,我的对象没有显示我复制了他的代码并粘贴了它,但仍然没有任何更改

这是我的顶点着色器:

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoord;

out vec2 TexCoord;

uniform mat4 transform;

void main()
{
    gl_Position = transform * vec4(aPos, 1.0);
    TexCoord = vec2(aTexCoord.x, aTexCoord.y);
}
我的渲染:

// bind textures on corresponding texture units
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture1);

// create transformations
glm::mat4 transform;
transform = glm::rotate(transform, glm::radians((float)glfwGetTime()), glm::vec3(0.0f, 0.0f, 1.0f));

// get matrix's uniform location and set matrix
ourShader.use();
unsigned int transformLoc = glGetUniformLocation(ourShader.ID, "transform");
glUniformMatrix4fv(transformLoc, 1, GL_FALSE, glm::value_ptr(transform));

// render container
glBindVertexArray(VAO);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

当我从顶点着色器中的乘法中删除变换时,一切正常

您必须初始化矩阵变量
glm::mat4 transform

这是指

5.4.2向量和矩阵构造函数

如果向量构造函数只有一个标量参数,则它用于将构造向量的所有组件初始化为该标量的值如果矩阵构造函数只有一个标量参数,则它用于初始化矩阵对角线上的所有组件,其余组件初始化为0.0。

这意味着,单位矩阵可以通过单个参数1.0进行初始化:

glm::mat4 transform(1.0f);

该代码旨在提供旋转形状。你说的“很好”是指你可以看到那个形状,但不能移动,对吗?这意味着包含的变换矩阵不正确。尝试一个更简单的方法。您必须初始化
转换
glm::mat4转换(1.0f)-请参阅。可能重复“尝试一步一步”的内容。从没有纹理开始,然后添加它。此外,
gldrawerelements
对于学习目的代码来说是一个不好的选择。一个救命稻草谢谢!我已经搜索了glm::mat4默认构造函数的功能,发现它将mat初始化为标识。不过还是谢谢你