5

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

现在是的,我知道我可以简单地测试所有边缘以查看它们是否共享共面面,但我可以发誓我记得在定义三网格数据时看到某个地方,你可以说“这条线勾勒出一张脸,而这一个在一张脸里面。这样,在渲染时,您可以设置一个标志,基本上说“给我一个线框,但只有围绕完整面的边缘的线,而不是围绕构成它们的 tris 的线。”

顺便说一句,我的目标是所有支持 OpenGL ES 2.0 的平台,但我的开发平台是 iOS。同样,我很确定它最初是在 OpenGL 中的,并且一旦着色器出现在场景中可能已经贬值,但我什至找不到对这个功能的引用来检查是否是这种情况。

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

4

1 回答 1

3

OpenGL ES 不支持 GL_QUADS、glEdgeFlag 和 glPolygonMode。

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

于 2011-07-30T19:14:18.927 回答