glm-math

    0热度

    1回答

    我正在努力的OpenGL图形引擎,我遇到了一个非常奇怪的问题。基本上我正在导入(通过Assimp).DAE场景(由Cinema4D制作),其中还包含一个摄像头。相机位于原点并向左旋转20度并向上旋转20度,以使立方体的一部分出现在视口的右下角。 当渲染我先计算出“全球性”的lookAt矩阵,通过将摄像头节点的世界变换矩阵场景图中的的lookAt矩阵: cameraMatrix = transfor

    0热度

    1回答

    我的程序是一个房间,中间有一个光源(球体)。 我希望做一个“迪斯科”的模式,这将使球向左移动和沿x轴的权利。同时在红色和蓝色之间切换颜色。 这是我的代码,使模式的部分。 g_disco_mode是一旦模式被选择就为真的变量。 static void update_scene() { ... // Disco mode if (g_disco_mode)

    1热度

    1回答

    我的程序是一个房间,中间有一个聚光灯(由球体描绘)。 我想在房间的角落增加2个灯,但我不知道如何改变main功能在我的片段着色器允许这样。我编辑了我的主程序来设置2个新灯的属性并将它们绑定到片段着色器。 片段着色器 #version 330 core #define MAX_MATERIALS 12 #define MAX_LIGHTS 3 // interpolated values

    1热度

    1回答

    我想创建一个GLM向量(glm :: vec3专门)的std :: set。由于C++不知道如何对向量执行<操作,因此我必须传入比较函数。 我可以通过创建像这样的结构写我自己: struct compareVec { bool operator() (const glm::vec3& lhs, const glm::vec3& rhs) const { retur

    0热度

    1回答

    我无法弄清楚如何从我的对象的模型矩阵中提取围绕全局y轴的旋转。 我有我的对象作为glm :: mat4的当前模型矩阵,我需要取消围绕y轴的旋转。 glm中有没有什么功能我没注意到?

    1热度

    1回答

    我想弄清楚在OpenGL中将3D转换矩阵转换为2D的方法。我的z坐标被忽略(我正在使用地面投影)。 这里是什么,我想实现一个例子: // Given a transformation matrix // | r00 r01 r01 t0 | // | r10 r11 r11 t1 | // | r20 r21 r21 t2 | // | 0. 0. 0. 1. | // // Igno

    -1热度

    1回答

    只是一个有关GLM的快速问题。 我是C++和GLM的新手,对我很感兴趣。 我不明白这行做了什么: glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f); 什么是 “血管内皮细胞”?方法名称?一个构造函数?如果我重构它(重命名它),它仍然有效。 我知道它一定是一个变量,但它看起来像一个方法给我。 谢谢

    0热度

    1回答

    这是很容易设置ViewMatrix与GLM: glm::lookAt(Position, Direction, UpVector); ,但如果我尝试使用的Funktion与modelMatrix,我会得到comfusing值(型号是不是在正确的位置并且旋转看起来不正确)。 我只是想设置一个对象相同的方式设置相机。 我可以使用lookAt功能并在之后进行一些更改吗?或者我必须为此编写自己的功能?

    0热度

    2回答

    我无法通过统一的sampler2Ds发送两个纹理到我的片段着色器。我的片段着色器有两个制服,但看起来我的代码将同一图像发送给两个采样器。首先绑定的纹理似乎自动绑定到两个制服。 完整C++代码如下: #define GLEW_STATIC #include <GL/glew.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include

    2热度

    1回答

    我可以实现AABB方法来检测碰撞,它很容易且便宜,但是我想实现OBB以获得更高的精度,所以我创建了包含8个边界的模型初始化的边界框顶点和中心,每帧我转换所有的顶点与变换矩阵,以适应定向包围盒,但我不明白的方法来检测两个OBB之间的碰撞,我找不到一个简单和清晰的教程,解释算法与代码观点不是数学,因为我不是数学家。 ,如果我有 struct Box { glm::vec3 vertices[