Когда я связываю конкретную текстуру для рисования квадра в 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);