在opengl-for android中,有没有更干净的方法来重置起始绘图点
因此,我在我的GLView上画了一组正方形平面,想知道是否有更干净的方法来重置每个正方形之间的glTransatef。。假设我的第一个正方形在z轴的-5上,然后我想在z轴的+5上画下一个正方形在opengl-for android中,有没有更干净的方法来重置起始绘图点,android,opengl-es,Android,Opengl Es,因此,我在我的GLView上画了一组正方形平面,想知道是否有更干净的方法来重置每个正方形之间的glTransatef。。假设我的第一个正方形在z轴的-5上,然后我想在z轴的+5上画下一个正方形 gl.glTranslatef(0.0f, 0.0f, -5.0f); // move 5 units INTO the screen square.draw(gl); gl.glTranslatef(0.0f, 0.0f, 10.0f); // move
gl.glTranslatef(0.0f, 0.0f, -5.0f); // move 5 units INTO the screen
square.draw(gl);
gl.glTranslatef(0.0f, 0.0f, 10.0f); // move 10 units to compensate for last point
square2.draw(gl);
我的另一个问题是,目前我的两个正方形类有不同的matirx,因此它们可以从另一侧看到。有没有一种方法可以让我画一个正方形类,然后改变它的朝向,而不是一个完全不同的类?glPushMatrix glPopMatrix
glPushMatrix();
gl.glTranslatef(0.0f, 0.0f, -5.0f); // move 5 units INTO the screen
square.draw(gl);
glPopMatrix();
glPushMatrix();
gl.glTranslatef(0.0f, 0.0f, +5.0f); // move 10 units to compensate for last point
square2.draw(gl);
glPopMatrix();
编辑
glPushMatrix创建当前活动矩阵的副本(在当前矩阵模式和堆栈中),并将其推送到矩阵堆栈的顶部。所有矩阵操作都发生在矩阵堆栈的顶部。glPopMatrix删除堆栈顶部的矩阵,以便所有进一步的矩阵操作(在当前矩阵模式和堆栈中)对通过相应推送保存的矩阵进行操作
请注意,对于OpenGLES2和OpenGL3以及更高版本,不再有矩阵操作函数,因此这些天都有点过时了
第二个子问题的最新情况
我的另一个问题是,目前我的两个正方形类有不同的matirx,因此它们可以从另一侧看到。有没有一种方法可以让我画一个正方形的类,改变它的朝向,而不是一个完全不同的类
只需将第二个矩阵设为类成员,并按照类构造函数进行设置。事实上,我不太明白你的问题。一个代码示例会有所帮助。glPushMatrix-glPopMatrix
glPushMatrix();
gl.glTranslatef(0.0f, 0.0f, -5.0f); // move 5 units INTO the screen
square.draw(gl);
glPopMatrix();
glPushMatrix();
gl.glTranslatef(0.0f, 0.0f, +5.0f); // move 10 units to compensate for last point
square2.draw(gl);
glPopMatrix();
编辑
glPushMatrix创建当前活动矩阵的副本(在当前矩阵模式和堆栈中),并将其推送到矩阵堆栈的顶部。所有矩阵操作都发生在矩阵堆栈的顶部。glPopMatrix删除堆栈顶部的矩阵,以便所有进一步的矩阵操作(在当前矩阵模式和堆栈中)对通过相应推送保存的矩阵进行操作
请注意,对于OpenGLES2和OpenGL3以及更高版本,不再有矩阵操作函数,因此这些天都有点过时了
第二个子问题的最新情况
我的另一个问题是,目前我的两个正方形类有不同的matirx,因此它们可以从另一侧看到。有没有一种方法可以让我画一个正方形的类,改变它的朝向,而不是一个完全不同的类
只需将第二个矩阵设为类成员,并按照类构造函数进行设置。事实上,我不太明白你的问题。一个代码示例会有所帮助。你能谈谈Push和Pop的实际功能吗?另外,你对我问题的第二部分有什么建议:“另一个问题是,目前我的两个正方形类有不同的材质,因此它们可以从另一个正方形类的对面看到。有没有一种方法可以让一个正方形类在我绘制它时改变它的朝向,而不是完全不同的类?”我正在画两个正方形。。平方1和平方2。它们目前是独立的类,绘制一个正方形,但角度不同,因此它们面向0,0,0。我想要一个名为square的类,当我画一个新的类时,在一个新的x,y,z位置,告诉它面对0,0,0注意,我最终会将纹理应用到每个正方形,并通过JSON提要或something@erik当前位置我还是不明白,你的实际问题是什么。实现一个类“square”,将其从例如“drawobject”之类的子类中派生出来,并让它具有一些用于参数化图形的成员变量。为类提供一些方法来更改这些变量的值,并使用构造函数设置它们。然后在图形代码中(覆盖的“drawobject”的虚拟方法)使用这些成员变量的值来影响图形。然后你可以有任意数量的正方形。我不想让我的应用程序计算出正方形的新矩阵是什么,这取决于笛卡尔图的位置。我希望所有的正方形在绘制时都是{10,0,-10}{10,0,10}{-10,0,-10}{-10,0,10}。。我问的是,是否有一种方法可以在正方形被绘制和纹理化之后,使其旋转到0,0,0面,无论它在笛卡尔图上的什么位置。。像素描(gl)这样的东西;square.faceCenter()//那是我编的。。我在问是否有一种方法可以做到这一点。你能谈谈Push和Pop的实际用途吗?另外,你对我问题的第二部分有什么建议:“另一个问题是,目前我的两个正方形类有不同的材质,因此它们可以从另一个正方形类的对面看到。有没有一种方法可以让一个正方形类在我绘制它时改变它的朝向,而不是完全不同的类?”我正在画两个正方形。。平方1和平方2。它们目前是独立的类,绘制一个正方形,但角度不同,因此它们面向0,0,0。我想要一个名为square的类,当我画一个新的类时,在一个新的x,y,z位置,告诉它面对0,0,0注意,我最终会将纹理应用到每个正方形,并通过JSON提要或something@erik当前位置我还是不明白,你的实际问题是什么。实现一个类“square”,将其从例如“drawobject”之类的子类中派生出来,并让它具有一些用于参数化图形的成员变量。为类提供一些方法来更改这些变量的值,并使用构造函数设置它们。然后在图形代码中(覆盖的“drawobject”的虚拟方法)使用这些成员变量的值来影响图形。然后你可以有一个套利者