Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';OpenGL中对四元数的支持是什么?_Opengl_Math_Matrix_Opengl Es_Quaternions - Fatal编程技术网

什么';OpenGL中对四元数的支持是什么?

什么';OpenGL中对四元数的支持是什么?,opengl,math,matrix,opengl-es,quaternions,Opengl,Math,Matrix,Opengl Es,Quaternions,考虑到现代OpenGL(3.x、4.x、ES 2和3、WebGL)和现代GLSL,支持四元数与支持矩阵的情况如何 我发现越来越多的现代算法和论文在大多数情况下完全绕过矩阵表示,只使用四元数,特别是关于照明的,但我仍然需要在OpenGL或任何OpenGL ARB扩展中找到四元数的痕迹 此Khronos标准的四元数状态如何?不存在,您可以将它们作为向量4传递到着色器,但您必须自己实现对向量的四元旋转应用 此外,您还需要传入vec3平移和投影参数 大多数情况下,从quat+translation-pl

考虑到现代OpenGL(3.x、4.x、ES 2和3、WebGL)和现代GLSL,支持四元数与支持矩阵的情况如何

我发现越来越多的现代算法和论文在大多数情况下完全绕过矩阵表示,只使用四元数,特别是关于照明的,但我仍然需要在OpenGL或任何OpenGL ARB扩展中找到四元数的痕迹


此Khronos标准的四元数状态如何?

不存在,您可以将它们作为向量4传递到着色器,但您必须自己实现对向量的四元旋转应用

此外,您还需要传入vec3平移和投影参数


大多数情况下,从quat+translation-pls投影创建等价矩阵并将其传递给mat4会更快。很大程度上是因为将mat4与向量相乘比应用与quat相同的旋转速度更快(并且在硬件上优化得更好),如果你做的足够多,mat4将在速度上获胜,甚至考虑到将四元数转换为mat4表示所需的努力。

你可以实现自己的四元数并使用
vec4
进行存储。不应该太难。有一些很好的理由不提供四元数?我读过一些文章,其中显示四元数比矩阵提供更好的压缩,那么为什么供应商或ARB不加上这一点呢?因为大多数时候矩阵作为一个统一的文件只上传一次,而且它们更灵活;不能仅用四分之一表示投影、平移、缩放或剪切。。。是的,但四元数比矩阵更友好,至少对我来说,矩阵更灵活并不意味着四元数应该从API列表中删除。所以你基本上是说,如果我有一个四元数,我必须从CPU端计算值,我不能在GPU上做任何事情?@user2485710不,你可以在GPU上做你的四元数,你只需要自己实现它,它需要一些点积和叉积,但这是完全可行的。是的,但它将是一个“通用”点积和叉积,使用原始数据类型,您可以优化GPU寄存器/驱动程序中的内容;这仍然是一项开销,我不敢相信它在2014年仍然存在。无论如何,如果没有可用的,我会找到另一种方法。谢谢