Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在opengl-for android中,有没有更干净的方法来重置起始绘图点_Android_Opengl Es - Fatal编程技术网

在opengl-for android中,有没有更干净的方法来重置起始绘图点

在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

因此,我在我的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 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”的虚拟方法)使用这些成员变量的值来影响图形。然后你可以有一个套利者