背面剔除 + 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?的主要内容,如果未能解决你的问题,请参考以下文章

背面剔除(backface culling)

背面剔除真的能提高性能吗?

统一背面剔除使用搅拌机对象移除我的墙外

我的渲染技术进阶之旅OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题

我的渲染技术进阶之旅OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题

我的渲染技术进阶之旅OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题