Проблема с текстурами в OpenGL
От: igor_zaicev  
Дата: 30.01.07 10:50
Оценка:
Доброго времени суток! Работаю с OpenGL в VisualStudio 2005, дошел до наложения текстур и наткнулся на интересный баг:

где-то при инициализации загружаю текстуру:

clock_image = auxDIBImageLoadA("Часы.bmp");
glGenTextures(1, &clock_tex);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,
(float)GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
(float)GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
(float)GL_MODULATE);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3,
clock_image->sizeX,
clock_image->sizeY,
GL_RGB, GL_UNSIGNED_BYTE,
clock_image->data);

В DrawScene() накладываю текстуру на прямоугольник:

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, clock_tex );
glBegin(GL_QUADS);
glVertex3f( -1.0f, -1.0f, 0.0f);glTexCoord2d(0,0); // Слева внизу
glVertex3f( 1.0f, -1.0f, 0.0f);glTexCoord2d(1,0); // справа внизу
glVertex3f( 1.0f, 1.0f, 0.0f);glTexCoord2d(1,1); // Справа вверху
glVertex3f( -1.0f, 1.0f, 0.0f);glTexCoord2d(0,1);// слева вверху
glEnd();

Все замечательно, однако после разбиения прямоугольника на два треугольника:

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, clock_tex );
glBegin(GL_TRIANGLES);
glVertex3f( -1.0f, -1.0f, 0.0f);glTexCoord2d(0,0);
glVertex3f( 1.0f, -1.0f, 0.0f);glTexCoord2d(1,0);
glVertex3f( 1.0f, 1.0f, 0.0f);glTexCoord2d(1,1);

glVertex3f( 1.0f, 1.0f, 0.0f); glTexCoord2d(1,1);
glVertex3f( -1.0f, 1.0f, 0.0f);glTexCoord2d(0,1);
glVertex3f( -1.0f, -1.0f, 0.0f);glTexCoord2d(0,0);
glEnd();


glDisable(GL_TEXTURE_2D);

текстура накладывается криво, в чем ошибка ???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.