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

标签 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 变换属性那样实现纹理的透视变换?

最佳答案

问题很可能出在 glFrustumfglOrthof 之一。这两个调用中的最后一个参数将采用 z-far,并且它应该足够大以便绘制图元。如果正方形的边长为 1.0,中心位于 (.0, .0, .5),则 z 远应为 (> 1.0),才能看到正方形绕 X 或 Y 轴旋转 90 度。但请注意,这些也可能依赖于其他矩阵运算(翻译对象或使用诸如 lookAt 之类的工具)。 使这个参数足够大应该可以解决您的问题。

要实现透视变换,请使用 glFrustumf 而不是 glOrthof

关于ios - 如何在 OpenGL ES 1.1 中绕 x 和 y 旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502169/

相关文章:

ios - 如何在 iOS 应用程序中存储通知详细信息?

android - Nexus One GL_FRAMEBUFFER_OES 扩展...实际上不存在?

android - 位图未正确保存(来自 Android 的 Canvas)

ios - html 5 input DateTime-Local 任何浏览器 ios 9 native 日期时间选择器 - 如何选择年份?

ios - 我可以存储应用程序中的图像,以便点击后即可在照片库中打开吗?

android - 在禁用 VERTEX_ARRAY 客户端状态的情况下调用 glDrawElements

android - 无法解析函数 'glDrawTexfOES'

Android OPEN GL ES 多纹理什么都不画

c++ - VBO 不绘制任何东西

iphone - 图表中游戏速度值的近似值