текстура не отображает всю поверхность NURBS - PullRequest
0 голосов
/ 11 ноября 2011
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 голосов
/ 12 ноября 2011

Проведя много часов, я наконец нашел проблему.

Когда я вычисляю координаты контрольных точек, я использую код, подобный tCtrPoint[i][j][1] =j/(num-1); Проблема в том, что делимое и делитель являются целочисленными типами. Таким образом, деление \ не получило правильное значение. Я сделал такую ​​ошибку раньше.

...