opengl着色器中的多边形细分

opengl着色器中的多边形细分,opengl,shader,Opengl,Shader,我希望在opengl中使用轮廓和填充渲染20k+2D多边形 有些多边形是凹形的 是否可以使用着色器执行此操作?此操作不需要着色器: glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //Fill glDrawElements(...); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //Outline glDrawElements(...); 如果多边形为凹面,则必须手动或使用gl实用程序库glu对其进行细分。看看gl

我希望在opengl中使用轮廓和填充渲染20k+2D多边形

有些多边形是凹形的


是否可以使用着色器执行此操作?

此操作不需要着色器:

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //Fill
glDrawElements(...);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //Outline
glDrawElements(...);
如果多边形为凹面,则必须手动或使用gl实用程序库glu对其进行细分。看看
glunewess
。如果您决定自己对多边形进行细分,则必须记住设置正确的边标志,以便不会渲染细分的内部边,请参见
glEdgeFlagPointer


编辑:关于如何使用模具缓冲区渲染凹多边形,我找到了以下内容。

如果某些多边形是凹多边形,谢谢!我会努力的。但是,镶嵌必须在CPU上完成,而不是使用着色器?@madcat通常是的,在未来版本的几何体着色器中可能在GPU上完成,但我认为现在不可能。但是,我发现了一种使用模具缓冲区渲染凹面多边形的有趣方法,请参见更新。这里更好地解释了模具方法:(搜索凹面)。它包括两次将多边形绘制为三角形扇形,第一次生成模具缓冲区,第二次绘制模具设置的位置。
glunewess
现在已被弃用,实现这一点的现代方法是什么?