Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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
Android OpenGL-nehe教程中的类似绘图_Android_Opengl Es - Fatal编程技术网

Android OpenGL-nehe教程中的类似绘图

Android OpenGL-nehe教程中的类似绘图,android,opengl-es,Android,Opengl Es,我曾经在OpenGL中为PC制作简单的游戏,现在我想在Android上做点什么。 但是,很多事情是不同的。。。为什么画正方形这么复杂?(http://www.jayway.com/2009/12/04/opengl-es-tutorial-for-android--part-ii-building-a-polygon/) 为什么不像nehe教程中那样简单: glBegin(GL_TRIANGLES); // Drawing Using Triangles

我曾经在OpenGL中为PC制作简单的游戏,现在我想在Android上做点什么。 但是,很多事情是不同的。。。为什么画正方形这么复杂?(http://www.jayway.com/2009/12/04/opengl-es-tutorial-for-android--part-ii-building-a-polygon/) 为什么不像nehe教程中那样简单:

glBegin(GL_TRIANGLES);                      // Drawing Using Triangles
glVertex3f( 0.0f, 1.0f, 0.0f);              // Top
glVertex3f(-1.0f,-1.0f, 0.0f);              // Bottom Left
glVertex3f( 1.0f,-1.0f, 0.0f);              // Bottom Right
glEnd();                            // Finished Drawing The Triangle

有没有办法像在nehe教程中那样使用OpenGL?

简单地说,没有,旧式的管道已经不存在了

输出固定函数、即时模式、矩阵层次结构等,输入着色器和缓冲区

为什么不像nehe教程中那样简单:

glBegin(GL_TRIANGLES);                      // Drawing Using Triangles
glVertex3f( 0.0f, 1.0f, 0.0f);              // Top
glVertex3f(-1.0f,-1.0f, 0.0f);              // Bottom Left
glVertex3f( 1.0f,-1.0f, 0.0f);              // Bottom Right
glEnd();                            // Finished Drawing The Triangle
因为使用即时模式并不简单。即时模式之所以如此吸引人,是因为您可以将数字直接输入函数调用中。如果要从文件中加载几何体呢?你很可能会的!然后你的几何体在某个缓冲区中。然后,您需要构建循环,以正确的顺序调用即时模式函数,等等。一旦您将几何体放入缓冲区中,将OpenGL指向它并发出大量glDrawElement或glDrawArray调用实际上会更容易

使用顶点数组乍看起来复杂吗?对但从长远来看,顶点数组更容易使用

此外,它们的效率更高,因为您可以批量发送大量几何体

有没有办法像在nehe教程中一样使用OpenGL


您的目标是OpenGL ES,不,这是不可能的(OpenGL-3 core和更高版本也不可能)。坦白地说:你不应该一开始就用内河的方式。NeHe教程已经过时,不能有效地利用现代GPU功能。

我假设您正在尝试使用OpenGL ES 2,对吗?OpenGL ES 2要求您使用着色器,这需要做更多的工作,但从长远来看效果更好。此外,对于更大的几何体,调用数千种方法与调用一种方法相比,在性能上也有很大差异。