纹理不映射整个nurbs表面

时间:2011-11-11 16:34:02

标签: opengl glu nurbs

glGenTextures(1, &texName[0]);
glBindTexture(GL_TEXTURE_2D, texName[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, widthImage , widthImage, 
    0, GL_RGB, GL_UNSIGNED_BYTE, image);

我尝试将纹理映射到nurbs表面。

gluBeginSurface(theNurbs);

gluNurbsSurface(theNurbs, numOfKnots, knots, numOfKnots, knots, ctrNum*3, 3, &tCtrPoint[0][0][0],order, order,GL_MAP2_TEXTURE_COORD_2);

gluNurbsSurface(theNurbs, numOfKnots2, knots2, numOfKnots2, knots2, ctrNum2*3, 3, &ctrPoint[0][0][0], order2, order2, GL_MAP2_VERTEX_3);

gluEndSurface(theNurbs);

问题是纹理看起来映射了表面的所有区域,但是,照片只出现在左下方小网格(白色网格)中。另一部分是黑色。

我想将照片映射到整个表面。但我无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:0)

花了好几个小时后,我终于找到了问题。

当我计算控制点的坐标时,我使用像tCtrPoint[i][j][1] =j/(num-1);这样的代码。问题是被除数和除数是整数类型。因此除法\没有得到正确的值。我之前犯了这种错误。