OpenGL矩阵转置测试——禁止转载

本文通过测试分析OpenGL中的矩阵存储方式,发现尽管OpenGL声称使用列主序,但在内存中仍按行存储。通过矩阵相乘实验,揭示了OpenGL在内部处理时进行了转置,以实现列主序的效果。最后指出,开发者应理解这一机制,以便正确操作矩阵。
摘要由CSDN通过智能技术生成

一直没有找到很好的解释,或者解释复杂简短,还是自己动手测试一下,测试步骤如下:

1.输入glTranslatef(0.1,0.1,0.0);

得到的GL_MODELVIEW_MATRIX的值为:

 

说明变换矩阵变换的是12,13,14,15这几个变量,问题又产生了,12,13,14,15又是最后一行还是最后一列呢?

2.输入 

 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 GLfloat mat[] = {//检验矩阵的存储形式,
  1.0, 0.0, 0.0, 1.0,
  0.0, 1.0, 0.0, 0.0,
  0.0, 0.0, 1.0, 0.0,
  0.0, 0.0, 0.0, 1.0
 };
 glMultMatrixf(mat);
 GLfloat Test[16];
 glGetFloatv(GL_MODELVIEW_MATRIX,Test);

得到如下结果图:

 

说明在内存当中还是按行存储的。要不然Test【3】== 0.0,

改动代码如下:

 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 glTranslatef(0.1,0.1,0.0);
 GLfloat mat[] = {//检验矩阵的存储形式,
  1.0, 0.0, 0.0, 1.0,
  0.0, 1.0, 0.0, 0.0,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值