我正在使用 OpenTK(OpenGL 的 ac# 包装器)绘制使用 Cox-deBoor 算法计算的 NURBS 曲面。该算法给出了表面上的各个点。如何从这些点渲染整个表面?另外,如何绘制这些点的线框?
谢谢!
首先,您需要在表面上生成单个点的网格。如果您的表面参数介于 0 和 1 之间,假设您每 0.05 生成一个点。这样,您将拥有 200x200 = 40000 点的网格。(从你的帖子我知道你已经这样做了)
然后,您可以使用 GL_QUADS 为网格中的每组 4 个点绘制曲面。例如,您的第一个 QUAD 将是:
您必须对网格中的每个“单元格”执行相同的操作。
最后,如果您想将曲面视为线框,您有 2 个选项:第一个选项。使用代码:
// This option renders the surface in wireframe mode
GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
// This option renders the surface in shaded mode
GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
第二个选项。使用 GL_LINES 而不是 GL_QUADS 来绘制将形成线框模型的线条。