Текстуру удалось наложить, но есть некоторые проблемы!
Я поворачиваю камеру на 90 градусов( Что бы модель стояла правильно по координатам х,у.z, т.е стояла ровно)! При таком раскладе я налаживаю текстуру и... Текстура ложится прямо а не по вершинам указанных в 3ds файле! Далее пришлось посчитать вершины текстуры, в итоге по коду вышло так:
Код:
glBindTexture(GL_TEXTURE_2D, Texture);
glBegin(GL_TRIANGLES);
glNormal3fv(f->normal);
for (int i=0; i<3; ++i)
{
glNormal3fv(normalL[3*p+i]);
glTexCoord2f(mesh->texelL[f->points[i]][1]*scale_x, scale_y - mesh->texelL[f->points[i]][0]*scale_y);
glVertex3fv(mesh->pointL[f->points[i]].pos);
}
glEnd();
И что вы думаете? Не получилось... Далее я полез в фотошоп и повернул текстуру на 90 градусов по часовой... Все ок! Текстура легла как надо!!!
Меня это не устроило и попробовал поворачивать текстуру перед наложением на модель(в самом коде). Сделал так:
Код:
QImage Viewer::loadBMP(QString NameBMP)
{
QImage img(NameBMP);
if (img.isNull())
{
qWarning("Unable to load file[bmp]");
return img;
}
QMatrix matr;
matr = matr.rotate(90);
QTransform trans(matr);
img.transformed(trans); // переменная img типа QImage, в которой помещена текстура формата .bmp
return QGLWidget::convertToGLFormat(img); // flipped 32bit RGBA
}
Но текстура так и не повернулась... Код в первом посте обновлен!