gpt4 book ai didi

c++ - glm::vec3 和 glm::mat4 是如何初始化的?

转载 作者:行者123 更新时间:2023-11-30 05:20:14 35 4
gpt4 key购买 nike

这是关于理解 glm 源码的。我想知道 glm 是否对它的类进行了零初始化并进行了尝试。是的,glm::vec3glm::mat4 被初始化,即使没有提供构造函数值。然后我想了解它是如何完成的并阅读了glm::mat4的来源模板。

有这个部分:

...
enum ctor{null};

// Constructors
GLM_FUNC_DECL tmat4x4();
GLM_FUNC_DECL tmat4x4(tmat4x4 const & m);
GLM_FUNC_DECL explicit tmat4x4(ctor Null);
...

我可以读到有一个 (void) 构造函数 (ctor) 但没有定义,所以没有 {...} 部分。并且有一个 explicit 构造器,它以 0 作为来自 enum ctor 类型的第一个元素的参数,当然它的索引值是 0

  • 构造函数定义在哪里?我怎样才能找到他们?
  • 那个明确的 Null 构造函数是做什么用的?
  • glm::mat4 是如何初始化为单位矩阵的,当我写:glm::mat4 myMatrix;

编辑:浏览 GitHub 上最新的源文件,从 mat4x4.hppdetail/type_mat4x4.hpp 中找到一个 #includes type_mat4x4.inl 中的实现细节.在那里,构造函数的行为变得可见。

最佳答案

它不再默认初始化。在包含强制初始化之前定义 GLM_FORCE_CTOR_INIT。 https://github.com/g-truc/glm/issues/809

#define GLM_FORCE_CTOR_INIT
#include <glm/glm.hpp>

关于c++ - glm::vec3 和 glm::mat4 是如何初始化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40760841/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com