OpenGL tex-mapping: весь объект - цвет одного текселя - PullRequest
0 голосов
/ 07 мая 2009

Я пытался заставить текстуру HUD отображаться для симулятора некоторое время, но безуспешно.

Сначала я свяжу текстуру следующим образом:

glGenTextures(1,&hudTexObj);
gHud = getPPM("textures/purplenebula/hud.ppm",&n,&m,&s);
glBindTexture(GL_TEXTURE_2D,hudTexObj);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,n,m,0,GL_RGB,GL_UNSIGNED_INT, gHud);

И затем я пытаюсь сопоставить его с квадроциклом, в результате чего весь квадроцикл имеет один коричневый цвет, и я хочу, чтобы он использовал все тексели. Вот как я отображаю:

    glBindTexture(GL_TEXTURE_2D,hudTexObj);

glBegin(GL_QUADS);
glTexCoord2f(0.0,0.0);
glVertex2f(0,0);

glTexCoord2f(0.0,1.0);
glVertex2f(0,m);

glTexCoord2f(1.0,1.0);
glVertex2f(n,m);

glTexCoord2f(1.0,0.0);
glVertex2f(n,0);
glEnd();

Странная вещь заключается в том, что я смог получить приведенный выше код для отображения текстуры в собственной программе, но когда я помещаю ее в свою основную программу, она не работает. Может ли это быть связано с текстурой матрицы? Я ошеломлен в этот момент.

1 Ответ

1 голос
/ 08 мая 2009

Глупо, я включил автоматическую генерацию tex-координат далеко в другой части кода. Так что, если вы видите цвет одного текселя, охватывающий все изображение, это вероятная причина.

...