opengl着色器中的多边形镶嵌
Posted
技术标签:
【中文标题】opengl着色器中的多边形镶嵌【英文标题】:polygon tessellation in opengl shader 【发布时间】:2010-01-13 07:16:46 【问题描述】:我希望在 opengl 中使用轮廓和填充渲染 20k+ 2D 多边形。
有些多边形是凹的。
是否可以使用着色器来做到这一点?
【问题讨论】:
【参考方案1】:您不需要为此使用着色器:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //Fill
glDrawElements(...);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //Outline
glDrawElements(...);
如果多边形是凹面的,则必须手动或使用 gl 实用程序库 glu 对它们进行镶嵌。看看gluNewTess
。如果您决定自己对多边形进行细分,则必须记住设置正确的边缘标志,以便不会渲染细分的内部边缘,请参阅glEdgeFlagPointer
。
编辑:我找到了以下link,了解如何使用模板缓冲区来渲染凹多边形。
【讨论】:
如果某些多边形是凹的? 谢谢!会尝试。但是,曲面细分必须在 CPU 上完成,而不是使用着色器? @madcat 通常是的,在未来版本的几何着色器中可能可以在 GPU 上执行,但我现在不认为可能。但是,我发现了一种使用模板缓冲区渲染凹多边形的有趣方法,请参阅更新。 模具方法在这里解释得更好:fly.srk.fer.hr/~unreal/theredbook/chapter13.html(搜索凹面)。它涉及将多边形绘制为三角形扇形两次,第一次生成模板缓冲区,第二次绘制设置模板的位置。gluNewTess
现已弃用,实现这一目标的现代方法是什么?以上是关于opengl着色器中的多边形镶嵌的主要内容,如果未能解决你的问题,请参考以下文章
从 YouTube 复制的 OpenGL 着色器中的语法错误