问题标签 [glm-math]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4101 浏览

c++ - GLM + STL:运算符 == 缺失

我尝试在 STL 容器中使用 GLM 矢量类。只要我不尝试使用<algorithm>. 大多数算法依赖于==没有为 GLM 类实现的运算符。

有人知道解决此问题的简单方法吗?无需(重新)实现 STL 算法 :(

GLM是一个很棒的数学库,在 c++ 中实现了 GLSL 函数

更新

我刚刚发现 glm 实际上在扩展中实现了比较运算符(here)。但是我如何在 stl 中使用它们?

更新 2

这个问题已经被这个问题所取代:如何在stl算法中使用glm的operator==?

0 投票
1 回答
11122 浏览

opengl - glm中矩阵值的顺序不正确?

我开始使用GLM库在 OpenGL 3 和 GLSL 上进行数学运算。我需要一个正交投影来绘制 2D 图形,所以我写了这个简单的代码:

在屏幕上打印 glm::ortho 创建的值我得到:

据我所知,这不是 OpenGL 中值的正确顺序,因为将此矩阵乘以位置向量将忽略所有平移值。

我用我的着色器和一些原语测试了那个矩阵,我只得到一个空白屏幕。但是如果我手动修改矩阵如下它可以正常工作:

此外,查看“glm/gtc/matrix_transform.inl”文件中的函数“ortho”:

我已用以下代码替换了最后 3 行初始化行,并且工作正常:

这是我用于测试的最小顶点着色器(请注意,此时 uni_MVP 只是上面解释的投影矩阵):

我认为这不是错误,因为所有功能都以相同的方式工作。也许是我的 C++ 编译器的问题,它反转了多维数组的顺序?如何在不修改所有 GLM 源代码的情况下解决这个问题?

我正在使用最新版本的 GLM 库 (0.9.1),其中 Code::Blocks 和 MinGW 在 Windows Vista 上运行。

0 投票
2 回答
1151 浏览

c++ - 使用 GLM 的最佳 glMatrixMode() 是什么?

我的下一个问题(或问题)是,当我用 glm 加载模型时,我能够看穿模型的某些部分,例如:如果有两座山在另一座前面,我可以看穿更近的山.

我会展示一张图片,但由于纹理不起作用,因此无法理解。

这里的问题是:

在此处输入图像描述

旧的东西:vvvvvvvvvvvvvvvvvvvvvvv

我想知道的是:使用 glm 的最佳矩阵模式是什么?

我已经习惯了 GL_PROJECTION 但是在加载我的模型时它给了我太多的问题

并且使用 GL_MODELVIEW 我无法将相机移回

我也想知道:如果我使用 GL_MODELVIEW,那么如何在场景中移动“相机”?有没有办法设置一个,因为我最终必须这样做?

编辑:好的,这里有一些代码可以给你们一些愿景:

0 投票
1 回答
1022 浏览

c++ - 在 GLM 中旋转模型

嘿,我一直在使用GLM,我注意到我无法找到旋转模型的功能。

这个问题不多,但我想知道是否有一种方法可以旋转 GLM 模型,或者在我的 opengl 程序中旋转和单个模型。

如果是这样,那么你能指点一下吗?

0 投票
2 回答
3900 浏览

c++ - 我将如何使用 Bullet 物理库设置碰撞?

嘿,我在我的 opengl/sfml 游戏中设置一些碰撞时有点“延迟”。它没有太大的错误,只是寻求一些帮助。我使用Bullet Physics(这是 API 参考),我一直在研究不同的函数和类。然后我注意到图书馆中包含演示,所以在查看它们时我并不完全理解它们..

他们推荐我使用的主要库是 CollisionInterfaceDemo,因为我已经将 GLM 用于 opengl 中的模型,并将 sfml 用于 2D 目的和窗口。

我只是想知道是否有人知道我将如何在我的游戏中实现碰撞。

0 投票
4 回答
1855 浏览

c++ - 加快变换计算

我正在编写一个 OpenGL3 2D 引擎。目前,我正在尝试解决瓶颈。因此请提供 AMD Profiler 的以下输出:http: //h7.abload.de/img/profilerausa.png

数据是使用数千个精灵制作的。

但是,在 50.000 个精灵时,testapp 在 5 fps 时已经无法使用。

这表明,我的瓶颈是我使用的变换函数。那就是对应的函数: http ://code.google.com/p/nightlight2d/source/browse/NightLightDLL/NLBoundingBox.cpp#130

我不能在着色器中这样做,因为我一次批处理所有精灵。这意味着,我必须使用 CPU 来计算转换。

我的问题是:解决这个瓶颈的最佳方法是什么?

我不使用任何线程 atm,所以当我使用 vsync 时,我也会受到额外的性能影响,因为它会等待屏幕完成。这告诉我我应该使用线程。

另一种方法是使用 OpenCL 也许?我想避免使用 CUDA,因为据我所知它只能在 NVIDIA 卡上运行。那正确吗?

后文:

如果您愿意,可以在此处下载演示:

http://www63.zippyshare.com/v/45025690/file.html

请注意,这需要安装 VC++2008,因为它是用于运行分析器的调试版本。

0 投票
3 回答
55990 浏览

c++ - 如何用数组初始化 glm::mat4?

我正在使用 OpenGL 数学库 ( glm.g-truc.net ) 并想glm::mat4用浮点数组初始化 a 。

这行不通。

我想解决方案很简单,但我不知道该怎么做。我找不到关于 glm 的好文档。我会很感激一些有用的链接。

0 投票
2 回答
45582 浏览

c++ - 在 GLM (OpenGL) 中将矩阵和向量相乘

我有一个变换矩阵m和一个向量v。我想使用矩阵对向量进行线性变换。我希望我能够做这样的事情:

不过,这似乎不起作用。在 GLM 中进行这种操作的正确方法是什么?

编辑:

只是给遇到类似问题的任何人的说明。GLM 要求所有操作数使用相同的类型。不要尝试将 advec4与 a相乘mat4并期望它起作用,您需要 a vec4

0 投票
3 回答
2766 浏览

opengl - 在 GLSL 着色器中创建视图矩阵

我在 GPU 上的一维纹理中存储了许多位置和方向。我想将它们用作 GLSL 几何着色器中的渲染源。为此,我需要从这些纹理创建相应的视图矩阵。

我的第一个想法是绕道 CPU,将纹理读取到内存并从那里创建一堆视图矩阵,例如glm::lookat(). 然后将矩阵作为统一变量发送到着色器。

我的问题是,是否可以跳过这个弯路,而是直接在 GLSL 几何着色器中创建视图矩阵?另外,这种可行的性能是否明智?

0 投票
2 回答
8304 浏览

opengl - 一些opengl和glm解释

有人可以解释一下以下几行的作用吗?

他们将单位转换为像素,但我不确定他们是否这样做。我的另一个问题,更一般的问题是,我如何将一个数字(即 sin(90) = 1)表示为 10 像素、40 或任何数字?我如何指定 (0,0) 将在屏幕中间?glm 库是否已处理上述所有问题?