gpt4 book ai didi

matrix - OpenGL ES 2.0(或 Marmalade SDK),效果类似于 OpenGL ES 1.x 中 "glRotate()", "glTranslation()"的顺序

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

在 OpenGL ES 1.x 中,可以先执行 glTranslate,然后执行 glRotate,以修改旋转中心的位置(即 围绕给定点旋转 )。据我了解,在 OpenGL ES 2.0 中,矩阵计算是在 CPU 端完成的。我正在使用 IwGeom(来自 Marmalade SDK)——一个典型的(可能)矩阵包。从文档:

Matrices in IwGeom are effectively in 4x3 format, comprising a 3x3 rotation, and a 3-component vector translation.



我发现使用这种方法很难获得相同的效果。平移总是在旋转后应用。更多,在Marmalade中,还设置了Model矩阵:
IwGxSetModelMatrix( &modelMatrix );

而且,显然,旋转和平移也以一种顺序应用:a) 旋转,b) 平移。

如何获得OpenGL ES 1.x 效果?

最佳答案

Marmalades IwGX包裹 OpenGL它更类似于GLES 1.0然后 GLES 2.0因为它不需要着色器。
glTranslateglRotate修改 View 矩阵。

您可以替换为

CIwFMat viewMat1 = IwGxGetModelMatrix();
CIwFMat rot; rot.SetIdentity(); rot.SetRotZ(.....); // or other matrix rotation function
CIwFMat viewMat2 = viewMat1;
viewMat2.PostMult(rot); // or viewMat2.PreMult(rot);
IwGxSetModelMatrix(viewMat2);
// Draw Something
IwGxSetModelMatrix(&viewMat1);

如果您使用 GLES 2.0那么矩阵也可以在顶点着色器中计算。那可能比 CPU 快。 CPUNEON指令在 iPhone 4S 上具有相似的性能

关于matrix - OpenGL ES 2.0(或 Marmalade SDK),效果类似于 OpenGL ES 1.x 中 "glRotate()", "glTranslation()"的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075225/

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