背面剔除 + GL_TRIANGLE_STRIP?
Posted
技术标签:
【中文标题】背面剔除 + GL_TRIANGLE_STRIP?【英文标题】:Back face culling + GL_TRIANGLE_STRIP? 【发布时间】:2012-02-05 23:32:17 【问题描述】:如果我有 4 个按此顺序渲染的顶点:
2-3
|\|
0-1
使用GL_TRIANGLE_STRIP
,然后我启用背面剔除,正面定义为逆时针方向,那么左下三角形会面向我而另一个不是吗?如果是这样,渲染正方形以使两个面都可见的最有效方法是什么?我是否必须使用GL_TRIANGLES
并传递 6 个顶点而不是 4 个?
【问题讨论】:
【参考方案1】:strip 原语在背面剔除方面做了正确的事情。您可以将 tris 的缠绕顺序视为已管理,以便条带中每个三角形的顺序一致 - 例如你可以想到GPU渲染(0,1,2),(2,1,3)...
【讨论】:
【参考方案2】:三角形条中的所有三角形保持相同的方向/缠绕顺序。 他们不会一个接一个地翻转。因此,两个三角形要么朝向你,要么远离你(假设你的图元是扁平的方形(即凸面且不与自身相交),所有顶点都属于同一平面)。
附:您知道,您可以在启用剔除的 OpenGL 应用程序中渲染三角形条带图元并亲自查看。
【讨论】:
或者您可以阅读文档:opengl.org/registry/doc/glspec42.core.20120119.pdf(第 22 页)以上是关于背面剔除 + GL_TRIANGLE_STRIP?的主要内容,如果未能解决你的问题,请参考以下文章
我的渲染技术进阶之旅OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题