加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – glMultMatrix / glLoadMatrix比glRotatef或glTranslatef更

发布时间:2020-12-16 10:30:36 所属栏目:百科 来源:网络整理
导读:假设我有以下代码: glRotatef(angle,1.0f,0.0f);glRotatef(angle,0.0f,1.0f);glTranslatef(0.0f,0.0f -5.0f); 这是否比通过glLoadMatrix函数使用自己的自定义矩阵效率更低,它可以实现相同的功能? 此外,我知道当将矩阵相乘以形成自定义线性变换时,最后一个
假设我有以下代码:

glRotatef(angle,1.0f,0.0f);
glRotatef(angle,0.0f,1.0f);
glTranslatef(0.0f,0.0f -5.0f);

这是否比通过glLoadMatrix函数使用自己的自定义矩阵效率更低,它可以实现相同的功能?

此外,我知道当将矩阵相乘以形成自定义线性变换时,最后一个矩阵乘以是第一个发生的变换.同样,如果我使用上面的代码就是这种情况?它是否会平移,然后围绕Z轴旋转,然后绕y轴和x轴旋转?

解决方法

一般情况下,如果您自己组装矩阵并通过glLoadMatrix或glMultMatrix加载它,您的程序将运行得更快.除非你在你自己的矩阵程序中犯了愚蠢的错误,否则会破坏当然的表现.

这是因为glRotate glTranslate等功能比纯数学运算要多得多.他们必须检查矩阵模式. glRotate必须处理轴未作为单位向量等传递的情况.

但除非你每帧执行10万次,否则我不会担心丢失的性能.它加起来,但并没有那么多.

我个人处理openGL转换的方法是在我的代码中构建矩阵,并通过glLoadMatrix将它们上传到OpenGL.这允许我做很多快捷方式,比如颠倒乘法的顺序(计算速度比OpenGL的方式快).此外,它还允许我即时访问矩阵,如果您想在渲染之前进行边界框检查,则需要该矩阵.

不用说用这种方法编写的代码也更容易移植到不同的图形API上(想想OpenGL | ES2,DirectX,Game-Consoles ……)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读