如何在OpenGLES中翻转精灵/纹理?
时间:2020-03-06 14:26:46 来源:igfitidea点击:
我加载了一个精灵作为纹理,我需要对其进行动画处理,使其可以"左右""面对"-本质上有时我需要"翻转"它。我知道OpenGL具有gltranslate可以重新定位对象,而glrotate可以旋转对象。有没有一种方法可以简单地在一个轴上翻转它?如果没有,我们将如何实现?
解决方案
我们不能使用OpenGL点精灵执行此操作;尽管可以移动精灵的中心,但是精灵的形状始终以相同的方式定向。
我们可以做的是将精灵绘制为四边形,使我们可以随意翻转,旋转和弄乱它们。有关于在NeHe上手动绘制精灵(又名广告牌)的教程
我没有弄过点精灵,但是我相信它们是纹理。纹理具有纹理矩阵,这意味着可以在它们上使用glTranslatef()
,glScalef()
和glRotatef()
。
我将沿着glScalef(-1,1,1);
的方法进行尝试,该方法将通过X轴翻转纹理坐标。
就像我说的那样,我还没有玩过点精灵,但是我也没有弄乱纹理矩阵。不过,它们似乎确实很有用。
更新:在此期间,我玩过纹理矩阵。与在模型视图和投影矩阵之间切换的方式相同,我们可以切换到纹理矩阵。大约:glMatrixMode(GL_TEXTURE);
之后,我们可以执行上述操作。
我们也可以只画一个四角形/两个三角形并用它来完成:)