gpt4 book ai didi

opengl - 规范和蓝皮书中列主要格式的使用

转载 作者:行者123 更新时间:2023-12-04 14:33:24 28 4
gpt4 key购买 nike

我刚刚在这里阅读了 OpenGL 常见问题解答:http://www.opengl.org/resources/faq/technical/transformations.htm

查看他们题为“9.005 OpenGL 矩阵是列优先还是行优先?”的部分。在底部它说:

“可悲的是,在规范和蓝皮书中使用列优先格式导致 OpenGL 编程社区无休止的困惑。列优先表示法表明矩阵并没有像程序员所期望的那样在内存中布置。”

现在,我一直在竭尽全力以列优先顺序将矩阵数据传递给 OpenGL,以免将 OpenGL 的处理时间浪费在转置操作上。但是这个常见问题的答案是否暗示我不需要这样做?

最佳答案

常见问题本身有点过时。从技术上讲,使用 OpenGL-3 可以通过将 glUniformMatrix 的转置参数设置为 true 以行顺序格式传递矩阵。

然而,我个人认为列主要排序有一个巨大的好处:它允许直接访问矩阵描述的坐标系(转换)的基向量。看看你典型的转换矩阵

X_x Y_x Z_x T_x
X_y Y_y Z_y T_y
X_z Y_z Z_z T_z
W_a W_b W_c W_w

X、Y 和 Z 是您要转换成的坐标系的基向量,T 是偏移量。

现在看看OpenGL使用的索引
0 4 8 c
1 5 9 d
2 6 a e
3 7 b f

因此,在偏移量 0 处找到 X 向量,在偏移量 4 处找到 Y,偏移量 8 给出 Z,偏移量 c 给出 T。您可以直接访问它们,将它们传递给向量操作函数,例如
float vec4_length3(float v[4]);

直接的方式:
float M[16] = {...};

float T_length = vec4_length3(&M[c]);

而不是首先必须从矩阵中逐个废弃这些向量。

关于opengl - 规范和蓝皮书中列主要格式的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092172/

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