OpenGL ES/Android——是否有一个内置函数来重置对象的缩放、平移和旋转?

OpenGL ES/Android——是否有一个内置函数来重置对象的缩放、平移和旋转?,android,graphics,opengl-es,Android,Graphics,Opengl Es,我的程序绘制一个对象,然后平移、旋转和缩放它,然后重新绘制它,等等。 要设置翻译,我将执行以下操作: gl.glTranslatef(2,4,666); 然后清除它gl.glTranslatef(-2,-4,-666) 我想知道是否有内置函数可以执行此操作?只需使用glLoadIdentity()重置矩阵即可 另一种选择(如果有很多对象需要自己的矩阵)是在矩阵副本上绘制对象的图形。为了实现这一点,您需要使用glPushMatrix()和glPopMatrix()只需使用glLoadIdenti

我的程序绘制一个对象,然后平移、旋转和缩放它,然后重新绘制它,等等。 要设置翻译,我将执行以下操作:

gl.glTranslatef(2,4,666);
然后清除它
gl.glTranslatef(-2,-4,-666)


我想知道是否有内置函数可以执行此操作?

只需使用
glLoadIdentity()
重置矩阵即可


另一种选择(如果有很多对象需要自己的矩阵)是在矩阵副本上绘制对象的图形。为了实现这一点,您需要使用
glPushMatrix()
glPopMatrix()

只需使用
glLoadIdentity()
重置矩阵即可

另一种选择(如果有很多对象需要自己的矩阵)是在矩阵副本上绘制对象的图形。为了实现这一点,您需要使用
glPushMatrix()
glPopMatrix()

glPushMatrix()和glPopMatrix()这两种方法。在应用glTranslate之前按下,完成后弹出,它将还原堆栈。您必须记住,OpenGL是一个使用堆栈的基于状态的系统。应用glTranslatef时,将translate函数添加到堆栈中,因此在将其放置到堆栈上之后绘制的任何内容都将对其执行该转换。召唤

gl.glTranslatef(2,4,666); 
然后

gl.glTranslatef(-2,-4,-666);
如果我理解正确,将导致场景首先将对象移动到(-2,-4,-666),然后返回(2,4666)。因为它是一个堆栈,所以应用的最后一个转换将首先应用,并且第一个是最后一个。在设置场景时记住这个小事实会有帮助。只需在gl.glTranslatef(2,4666)之前推一下;,然后喝杯汽水,你应该表现得很好

glPushMatrix();
gl.glTranslatef(2,4,666);
//draw code here
glPopMatrix();
只要记住整个堆栈,您就应该能够思考任何问题区域。

glPushMatrix()和glPopMatrix()是实现这一点的正常方法。在应用glTranslate之前按下,完成后弹出,它将还原堆栈。您必须记住,OpenGL是一个使用堆栈的基于状态的系统。应用glTranslatef时,将translate函数添加到堆栈中,因此在将其放置到堆栈上之后绘制的任何内容都将对其执行该转换。召唤

gl.glTranslatef(2,4,666); 
然后

gl.glTranslatef(-2,-4,-666);
如果我理解正确,将导致场景首先将对象移动到(-2,-4,-666),然后返回(2,4666)。因为它是一个堆栈,所以应用的最后一个转换将首先应用,并且第一个是最后一个。在设置场景时记住这个小事实会有帮助。只需在gl.glTranslatef(2,4666)之前推一下;,然后喝杯汽水,你应该表现得很好

glPushMatrix();
gl.glTranslatef(2,4,666);
//draw code here
glPopMatrix();

只要记住整个堆栈,你就应该能够思考任何问题区域。

这样做的顺序是什么?推,弹出,加载重复?@farm ostrich:查看此获取更多信息->这样做的顺序是什么?推、弹出、加载重复?@farm ostrich:查看此以了解更多信息->