我有一个存储在
中的矩阵GLdouble m[16];
现在,使用glMultMatrixd(m),我将此矩阵乘以一个点的三维坐标。我想知道在与矩阵m相乘后形成的新坐标是什么。在openGL中是否有任何可以执行此操作的命令?
答案 0 :(得分:1)
不,没有任何有用的方法。
在现代GL中,出于充分的理由,集成矩阵堆栈已完全删除。应用程序员需要编写自己的矩阵函数,或者使用一些现有的库,如glm(它实现了以前在一些只有头文件的C ++库中的旧OpenGL中的所有东西)。值得注意的是,在这种情况下,像glMultMatrix
这样的操作从来都不是GPU加速的,并且总是由GL实现直接在CPU上执行,因此从GL中删除这些东西并没有丢失。
我并不是说不可能以某种方式让OpenGL为你做那个矩阵*向量乘法并回读结果。最直接的方法是使用transfrom feedback来捕获某个缓冲区对象中的顶点着色器的结果。但是,对于转换单个点,开销将是过高。
另一种 - 完全繁琐 - 使用它的内置矩阵函数来获取旧GL的方法来为你计算该产品只需将你的点作为第一列放入矩阵中,乘以{{1} }到您设置的矩阵,回读当前矩阵并在结果矩阵的第一列中找到变换点。