Как связывание текстуры для четырехугольника в OpenGL может повлиять на весь дисплей? - PullRequest
1 голос
/ 04 октября 2010

Когда я связываю конкретную текстуру для рисования квадра в OpenGL, это влияет на весь экран: если я использую красный BMP-файл, я вижу весь экран, как если бы я был в красных очках (одинаково для всех цветов: в черномЯ вижу очень темно, в белом все выглядит почти нормально).

Это для текстурных шрифтов, которые работают хорошо (в настоящее время я рисую только цифры, а остальная часть текстуры черная), но у меня естьэто странное поведение на любой другой поверхности.

Впрочем, проблем с другими файлами BMP нет.Он может быть из этого файла BMP, который я создал, но у меня не было проблем с открытием его в различных графических редакторах, и я вручную проверяю заголовки и данные в моей программе, которые выглядят хорошо.

Кто-нибудь знает, что можетбыть проблема здесь?

редактировать: это мой код для отображения шрифта:

static const GLfloat tfVertices[] = {
    -.5f, -.5f, .1f,
    -.5f,  .5f, .1f,
     .5f, -.5f, .1f,
     .5f,  .5f, .1f
};
GLfloat tfTextureCoords[] = {
     // I compute here the coords of the desired font, that works fine.
     // 4 lines of 2 float values (x, y)
};

glColor4ub(255, 255, 255, 255);
glBindTexture(GL_TEXTURE_2D, FontTextureGLnb); // when removing this (so use default texture instead of the one with fonts) I have no display bug.
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, tfVertices);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, tfTextureCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);

Ответы [ 2 ]

2 голосов
/ 04 декабря 2012

Делай как это

glEnable(GL_TEXTURE_2D);
        glPushMatrix();
         drawWindowCube();  // This plane is textured    
      glPopMatrix();
glDisable(GL_TEXTURE_2D);
2 голосов
/ 04 октября 2010

Нет проблем, вот как работает OpenGL.Если вы хотите текстуры, включите их, если вы не хотите текстуры, отключите их.Если вы установите состояние цвета вершины на красный, все будет отображаться красным, пока вы не измените это состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...