我想在OpenGL中创建一个NurbsSurface。我使用一个控制点大小为40x48的网格。此外,我创建索引以确定顶点的顺序。
通过这种方式,我创建了三角形表面。只是为了避免误解。我有float[] vertices=x1,y1,z1,x2,y2,z2,x3,y3,z3.......
和float[] indices= 1,6,2,7,3,8....
现在我不想画三角形。我想插入表面点。我想过nurbs或B-Splines。
线索是:为了确定Nurbs算法,我必须通过补丁内插补丁。在我的理解中,一个补丁被定义为例如点1,6,2,7或2,7,3,8(请打开图片)。
首先,我创建了顶点和索引,以便使用顶点着色器。但实际上,以旧方式绘制它就足够了。在这种情况下,我将确定顶点和索引如下:
float[] vertices= v1,v2,v3... with v=x,y,z
和
float[] indices= 1,6,2,7,3,8....
在OpenGL中,有一个Nurbs功能可供使用。 glNewNurbsRenderer。所以我可以轻松地渲染补丁。不幸的是,我在这一点上失败了,如何将补丁拼接在一起。我找到了Teapot example的解释但是(也许我已经对此感到痴迷)我无法将解决方案转移到我的案例中。你能帮我吗?
您有一组要从中绘制曲面的控制点。
有两种方法可以解决这个问题
注意:我建议的第二种方法有点棘手,你必须阅读很多研究论文。
我想如果你不想使用现代管道,那么我建议选择1。