OpenGL 转换无法使用 GLM 矩阵
OpenGL Transformations not working using GLM matrix
我正在使用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
。
glm API 文档参考了 OpenGL 着色语言规范 4.20。
5.4.2 向量和矩阵构造函数
如果向量构造函数只有一个标量参数,则它用于将构造向量的所有分量初始化为该标量的值。如果矩阵构造函数只有一个标量参数,则它用于初始化矩阵对角线上的所有组件,其余组件初始化为 0.0。
这意味着,单位矩阵可以通过单个参数 1.0 初始化:
glm::mat4 transform(1.0f);
相关文章:
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- OpenGL 转换无法使用 GLM 矩阵
- OpenGL GLM 矩阵/向量未正确初始化
- 给定方向和位置如何使用 GLM 计算旋转矩阵
- 使用 GLM 的 DirectX11 的 MVP 矩阵
- XYZ两个GLM :: MAT4矩阵的距离点对点
- 有没有办法从 glm 中的视图矩阵中提取转换矩阵
- glm ::翻译 - 它是否从向量构建矩阵
- 是GLM矩阵乘法左右
- 无法使用 glm::vec2 作为矩阵的标量类型并使用线性最小二乘法求解
- 如何重新定义 glm 矩阵变量或删除其转换
- GLM:旋转矩阵初始化
- 使用 glm 创建视图矩阵
- GLM 矩阵乘法向量给出不正确的结果
- GLM中的模型矩阵
- 四元数 -> 欧拉角 -> 旋转矩阵问题 (GLM)
- C++从函数错误中返回GLM矩阵:的左侧必须具有类/结构/并集
- GLM矩阵的旋转方向,使用四元数
- OpenGL GLM 矩阵计算不起作用