我在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转换属性实现纹理的透视转换?
答案 0 :(得分:1)
问题最有可能发生在glFrustumf
或glOrthof
之一。这2次调用中的最后一个参数将采用z-far,并且它应该足够大以绘制基元。如果正方形的边长是1.0并且中心是(.0,.0,.5)那么z-far应该是(> 1.0)以看到正方形围绕X或Y轴旋转90度。虽然注意这些也可以依赖于其他矩阵运算(翻译对象或使用像lookAt
这样的工具)。
使此参数足够大可以解决您的问题。
要实现透视转换,请使用glFrustumf
代替glOrthof
。