-1

我正在使用 OpenTK(OpenGL 的 ac# 包装器)绘制使用 Cox-deBoor 算法计算的 NURBS 曲面。该算法给出了表面上的各个点。如何从这些点渲染整个表面?另外,如何绘制这些点的线框?

谢谢!

4

1 回答 1

0

首先,您需要在表面上生成单个点的网格。如果您的表面参数介于 0 和 1 之间,假设您每 0.05 生成一个点。这样,您将拥有 200x200 = 40000 点的网格。(从你的帖子我知道你已经这样做了)

然后,您可以使用 GL_QUADS 为网格中的每组 4 个点绘制曲面。例如,您的第一个 QUAD 将是:

  • Surface.Evaluate_UV(0, 0)
  • Surface.Evaluate_UV(0.05, 0)
  • Surface.Evaluate_UV(0.05, 0.05)
  • Surface.Evaluate_UV(0, 0.05)

您必须对网格中的每个“单元格”执行相同的操作。

最后,如果您想将曲面视为线框,您有 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 来绘制将形成线框模型的线条。

于 2016-04-11T07:20:31.767 回答