首页 文章

OpenGL图形管道中的NURBS

提问于
浏览
0

我很好奇NURBS是如何在GPU / OpenGL图形管道中渲染的 . 我知道在OpenGL和GLUT中有各种调用,可以使用glMap和glMapGrid从编码角度轻松渲染NURBS对象,但我没有得到的是OpenGL完成此过程的过程 . NURBS背后的想法是使用曲线来定义曲面,而图形管道似乎围绕三角形栅格化和三角形网格构建,而NURBS基于Bezier曲线,它们是弯曲的 .

那么,从(高级)管道角度来看,NURBS实际上是如何实现的呢?

1 回答

  • 5

    简单的答案是,它们不在OpenGL管道中处理,但必须转换为GL管道可以处理的东西 . 一般的方法可能是首先转换为更加实时友好的原语,例如bezier补丁,然后在运行时将这些转换为三角形 .

    细分可以是规则的,将网格映射到补丁上,或者可以基于曲率,在具有更高方差的地方更多地细分补丁 . 无论哪种方式,曲面仅在某些顶点处进行真实评估,并呈现为平面多边形(尽管着色器可用于创建适当平滑变化的法线等)

    glMap() et-al(之前用于帮助渲染bezier补丁等)已弃用,现已不再出现在现代OpenGL API中 . 现在你将使用着色器来处理镶嵌细分 .

相关问题