在波前对象文件(.obj)中我应该如何在opengl中渲染具有4个以上顶点的面?

Der*_*k F 7 c++ opengl polygon wavefront

因此,使用此处定义的wavefront对象文件:http: //en.wikipedia.org/wiki/Wavefront_.obj_file

我该如何渲染在opengl中有超过4个顶点的面.我承诺如果它有3个顶点我使用GL_TRIANGLES,如果它有4我使用GL_QUADS,但如果它有5或更多,我应该使用什么?有标准吗?在我的互联网搜索中我还没有能够提出任何东西和样本打开gl代码我发现只支持最多4个顶点.

Nic*_*las 8

首先,您应该告诉任何导出工具不要导出具有那么多顶点的面.面应该有3个顶点,句点.

如果导出工具无法执行此操作,则加载工具应将多边形分解为3个顶点面.我非常确定Asset Importer库可以做到这一点.

  • `面应该有3个三角形,句号.你的意思是3个顶点,对吗? (3认同)
  • @PeterT 我从来没有这么说过。我当然不只是编辑我的帖子来改变它。……大家都相信吧? (2认同)

cma*_*t85 7

OBJ导出器将以每个面的合理顺序(反/顺时针)导出顶点,只要你的面是共面和凸面(它们应该是血腥的!) - 你可以使用GL_TRIANGLE_FAN.

我不同意Nicol Bolas的观点,即面部应该总是有3个顶点,尽管是傻瓜式的,如果您的多边形遵循上述规则,使用GL_TRIANGLE_FAN简化代码并减少系统内存消耗.没有什么会改变GPU方面,因为无论如何多边形将被分解为三角形.

  • Nicol Bolas是对的.面应各包含3个顶点.三角形是3D空间中唯一的非模糊基元.您无法以理智的形式指定的任何其他内容.光栅化器仅适用于三角形,因此必须将其分解.但他们应该以哪种方式做到这一点?只有首先使用三角形,您才能完全控制它. (4认同)
  • OBJ格式不强制共面性.你如何渲染以下四边形:`(-1,-1,-1),(1,1,-1),(1,-1,1),( - 1,1,1)`没有不明确的细分它的方法.我一个人回到了一个围绕给定点的平均值的三角扇,但这不一定是艺术家的意图. (3认同)