我在看vec4glm的源代码实现,我想知道为什么它们用union表示向量值,而不是像float或等原始数据类型int?
这是我在vec4实现中找到的代码:
union { T x, r, s; };
union { T y, g, t; };
union { T z, b, p; };
union { T w, a, q; };
Run Code Online (Sandbox Code Playgroud)
是什么,如果我们只是写的区别T x,T y,T z,T w?
Rei*_*ica 19
因为a vec4常用于:
x,y,z,wr,g,b,as,t,p,q(虽然这些不太规范,我也看到了r和u在不同环境下使用)利用工会允许用于访问如第二数据成员的任一.y或者.g,根据自己的喜好和语义.
Nic*_*las 16
GLM的设计与GLSL一样,就像C++允许的那样.在GLSL中,向量的混合操作可以使用xyzw,rgba或者stpq使用引用向量的相同元素的相应元素名称.因此,union用于匹配此行为.
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |