glm returning nan on simple translate(glm 在简单翻译上返回 nan)
问题描述
我正在使用 glfw、glad 和 glm 修补 OpenGL.在我使用的其中一个教程中,他们演示了 glm 的一些简单用法:
I'm tinkering with OpenGL using glfw, glad, and glm. In one of the tutorials I'm using, they demonstrate some simple usage of glm as so:
glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 trans;
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
vec = trans * vec;
std::cout << vec.x << vec.y << vec.z << std::endl;
当我编译并运行这段代码时,我得到了垃圾值(通常是 NAN).教程特别指出,实例化
When I compile and run this code, I get trash values (usually NAN). The tutorial specifically noted that instantiating
glm::mat4 trans;
默认情况下会为变量trans"创建一个单位矩阵.我想也许这就是问题所在,尽管我已经确认 glm 默认情况下会这样做.
would by default create an identity matrix for the varialbe "trans". I'm thinking that perhaps this is the issue, though I have verified that glm does do this by default.
如果有帮助,您可以找到整个源文件 在这里在第 308 行.非常感谢您的时间!
In case it would be helpful, you can find the entire source file here on line 308. I greatly appreciate your time!
推荐答案
你必须初始化矩阵变量 glm::mat4 trans
.
You have to initialize the matrix variable glm::mat4 trans
.
glm API 文档是指OpenGL 着色语言规范 4.20.
5.4.2 向量和矩阵构造函数
如果向量构造函数只有一个标量参数,则它用于将构造向量的所有组件初始化为该标量的值.如果矩阵构造函数只有一个标量参数,它用于初始化矩阵对角线上的所有分量,其余分量初始化为 0.0.
If there is a single scalar parameter to a vector constructor, it is used to initialize all components of the constructed vector to that scalar’s value. If there is a single scalar parameter to a matrix constructor, it is used to initialize all the components on the matrix’s diagonal, with the remaining components initialized to 0.0.
这意味着,可以通过单个参数 1.0 初始化单位矩阵:glm::mat4(1.0f)
.
This means, that an identity matrix can be initialized by the single parameter 1.0: glm::mat4(1.0f)
.
像这样改变你的代码:
glm::mat4 trans(1.0f);
另请参阅 OpenGL 数学 (GLM);2. 向量和矩阵构造器
这篇关于glm 在简单翻译上返回 nan的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:glm 在简单翻译上返回 nan
基础教程推荐
- Windows Media Foundation 录制音频 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07