我想在 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。所以我可以很容易地渲染一个补丁。不幸的是,我在这一点上失败了,如何将补丁缝合在一起。我找到了一个解释茶壶的例子 ,但是(也许我已经对此很着迷)我无法将解决方案转移到我的案例中。你能帮我吗?