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);
问题是纹理看起来映射了表面的所有区域,但是,照片只出现在左下方小网格(白色网格)中。另一部分是黑色。
我想将照片映射到整个表面。但我无法弄清楚如何做到这一点。
答案 0 :(得分:0)
花了好几个小时后,我终于找到了问题。
当我计算控制点的坐标时,我使用像tCtrPoint[i][j][1] =j/(num-1);
这样的代码。问题是被除数和除数是整数类型。因此除法\
没有得到正确的值。我之前犯了这种错误。