如何在OpenGL ES 1.1中围绕x和y旋转?

时间:2013-12-10 18:14:42

标签: ios opengl-es opengl-es-1.1

我在OpenGL ES 1.1中绘制了一个带有4个顶点的纹理。

它可以绕z:

旋转
glRotatef(20, 0, 0, 1);

但是当我尝试像CALayer一样围绕x或y旋转时,纹理就完全消失了。围绕x:

旋转的示例
glRotatef(20, 1, 0, 0);

我还尝试了非常小的值并在动画循环中递增它们。

// called in render loop
static double angle = 0;
angle += 0.005;
glRotatef(angle, 1, 0, 0);

在某些角度,我只看到纹理的边缘。好像OpenGL ES会剪掉任何深入的东西。

问题可能与投影模式有关吗?您将如何使用CALayer转换属性实现纹理的透视转换?

1 个答案:

答案 0 :(得分:1)

问题最有可能发生在glFrustumfglOrthof之一。这2次调用中的最后一个参数将采用z-far,并且它应该足够大以绘制基元。如果正方形的边长是1.0并且中心是(.0,.0,.5)那么z-far应该是(> 1.0)以看到正方形围绕X或Y轴旋转90度。虽然注意这些也可以依赖于其他矩阵运算(翻译对象或使用像lookAt这样的工具)。 使此参数足够大可以解决您的问题。

要实现透视转换,请使用glFrustumf代替glOrthof