0
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);

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

我想将照片映射到整个表面。但我不知道该怎么做。

4

1 回答 1

0

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

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

于 2011-11-12T00:41:26.010 回答