|
现在书本和网上所有的曲面例子都只有4x4个控制点,我把它扩展到8x8个控制点,可以正常绘制曲面,可是达到10x10以上就无法显示,不知道错在哪里?难道控制点数目有限制?可是如3dsmax软件可以插入无数的控制点啊。我需要一张曲面来建立一个人体模型,8x8个控制点肯定是不够的。请看代码:
/* 控制点*/
GLfloat ctrlpoints[8][8][3] = {
/* 调用二维求值程序 */
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 8, 0, 1, 24, 8, &ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
/* 求值 */
for (j = 0; j <= 8; j++)
{
glBegin(GL_LINE_STRIP);
for (i = 0; i <= 30; i++)
glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0);
glEnd();
}
这样画的bezier曲面没有什么问题,可是把8改成10以上时,就画不出来了,到底什么原因?
/* 控制点*/
GLfloat ctrlpoints[10][10][3] = {
/* 调用二维求值程序 */
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 10, 0, 1, 30, 10, &ctrlpoints[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
/* 求值 */
for (j = 0; j <= 8; j++)
{
glBegin(GL_LINE_STRIP);
for (i = 0; i <= 30; i++)
glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0);
glEnd();
}
是不是我把控制点、节点和阶数搞混了?那么,如果想画一个有几百个控制点的bezier或nurbs曲面该什么办呢?最好给出源码。万分感谢!
|
|