union在XMMATRIX里的妙用

本文深入解析了XMMATRIX结构中使用union技术的原理与应用,包括如何利用union实现矩阵数据的高效存储与访问,以及这种设计带来的便利性与灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚才翻xnamath.h看struct XMMATRIX的用法,发现里面的数据成员用了union,于是去补了下知识……


union是一种内存共用类型,比如下面

struct st
{
	int i;
	double f;
};

union un
{
	int i;
	float f;
};

sizeof(st)的话是8,sizeof(un)是4,un里的两个变量都是用同一片内存,修改一个就会直接影响到另外一个,满足一些特殊的数据储存要求


在XMMATRIX里面就可以这样使用的

    union
    {
        XMVECTOR r[4];
        struct
        {
            FLOAT _11, _12, _13, _14;
            FLOAT _21, _22, _23, _24;
            FLOAT _31, _32, _33, _34;
            FLOAT _41, _42, _43, _44;
        };
        FLOAT m[4][4];
    };

这里的r[4],struct和m[4][4]其实就是同一片数据。好处是啥呢?就是使用时可以直接_11,_12这样访问矩阵单个数据,也可以通过r[0],r[1]这样访问矩阵的某一行,或者用二维数组的方式m[0][0]这样去使用,而不需要专门去写处理转换函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值