在OpenGL ES 2.0中,除了相邻共面面上的线外,如何绘制三角形线框?

时间:2011-07-30 18:54:34

标签: hide opengl-es-2.0 edge wireframe edges

我依稀记得在OpenGL中看到的东西(不是ES,当我遇到这个时仍然在iPhone上的v1.0,这就是为什么我从未使用它)让我指定我的多边形的哪些边缘被认为是轮廓与构成面部内部的那些相比。因此,这与整个模型的轮廓(我知道该怎么做)不同,而是平面的轮廓,其所有tris基本上混合成一个多边形。例如,在由三个组成的立方体中,每个面实际上是两个三元组。我想渲染方形的轮廓,但不是渲染面部的对角线。六角形也一样。这需要四个tris,但只有一个面部轮廓。

现在是的,我知道我可以简单地测试所有边缘,看看它们是否共用共面面孔,但我可以发誓我记得在你定义三网格数据的时候看到某处,你可以说'这条线概述了脸,而这个是在脸上。这样,渲染时,您可以设置一个标记,基本上是“给我一个线框,但只包括完整面边缘的线,而不是围绕构成它们的tris。”

BTW,我的目标是支持OpenGL ES 2.0的所有平台,但我的开发平台是iOS。再次,这个Im非常肯定最初是在OpenGL中,并且一旦着色器出现在场景中可能已被折旧,但我甚至找不到对此功能的引用来检查是否是这种情况。

我现在知道的唯一方法是拥有一组顶点,但有两组独立的索引...一个用于渲染tris,另一个用于渲染面的线框。这是一个真正的痛苦,因为我最终手工编写了很多这个,再次,我99%肯定你可以定义渲染线。

1 个答案:

答案 0 :(得分:3)

OpenGL ES不支持GL_QUADS,glEdgeFlag和glPolygonMode。

您可以使用LINES绘制线框:要获取隐藏线,首先绘制黑色填充三角形(打开DEPTH),然后使用GL_LINES绘制您感兴趣的边缘。