Android Opengl三角形和面顶点限制?

Android Opengl三角形和面顶点限制?,android,ios,opengl-es,Android,Ios,Opengl Es,我正在制作一个opengl es应用程序,我总是通过每个四边形传递6个顶点索引来绘制四边形,从而将四边形分成两个三角形。我以为你能在3d图形中制作的只有四边形和三角形。。?我注意到在blender中,如果你使用decimate修改器,你可以创建一打或更多顶点的脸。opengl es可以呈现这个吗?如何渲染由十几个顶点组成的面?我不确定它是如何从opengl的引擎盖下透视图工作的。opengl是否只知道在每次收到3个顶点索引时进行绘制?如果是这样,那就方便了 OpenGL ES以及桌面OpenGL

我正在制作一个opengl es应用程序,我总是通过每个四边形传递6个顶点索引来绘制四边形,从而将四边形分成两个三角形。我以为你能在3d图形中制作的只有四边形和三角形。。?我注意到在blender中,如果你使用decimate修改器,你可以创建一打或更多顶点的脸。opengl es可以呈现这个吗?如何渲染由十几个顶点组成的面?我不确定它是如何从opengl的引擎盖下透视图工作的。opengl是否只知道在每次收到3个顶点索引时进行绘制?如果是这样,那就方便了

OpenGL ES以及桌面OpenGL的核心配置文件只支持由三角形组成的基本类型。较旧版本的OpenGL支持附加的基本类型,如
GL_四边形
GL_多边形
,但最近的硬件并不直接支持它们,而且大部分都是冗余的

除了单独的三角形(
GL_三角形
基本类型)外,还支持三角形条带(
GL_三角形
)和三角形扇(
GL_三角形
)。它们允许您绘制连接的三角形集,而无需为每个三角形指定3个顶点

下图(借用自)显示了如何从每个基本体类型的指定顶点形成三角形:

例如,如果当前为四边形使用6个顶点索引,则对于三角形网格或三角形扇形,只能使用4个顶点索引。有些人声称,减少索引的数量通常不会提高性能,只要您共享顶点

如果您的输入格式使用具有任意数量顶点的多边形,那么只要多边形是凸的,就仍然很容易处理。如果您查看上图中的三角形扇形,您会注意到顶点顺序实际上与多边形的顺序相同。因此,凸多边形可以直接用三角形扇形表示

如果您希望坚持使用
GL_三角形
进行渲染,并且输入具有n边多边形,则必须将它们拆分为三角形。同样,只要多边形是凸的,这是非常容易的。除了分别为每个三角形生成索引外,您可以使用与显示的三角形扇相同的三角形剖分类型。我在这里的回答进一步阐述了这一点:

非凸多边形是另一回事。您必须使用从中等简单到相当复杂的算法将它们拆分为三角形。如果你使用像“多边形三角剖分算法”这样的搜索词,你应该能够找到大量的文献。还可以在OpenGL中巧妙地使用模具缓冲区绘制凹多边形。但我怀疑大多数建模程序生成凹多边形,所以这是一个非常罕见的用例