Текстуры OpenGL рисуются белым впервые, когда используется GL_TEXTURE_2D - PullRequest
1 голос
/ 16 декабря 2011

Моя игра обычно использует GL_TEXTURE_RECTANGLE_EXT для рисования 2D текстур.Однако, поскольку это поддерживается не на всех аппаратных средствах, я пытаюсь заставить GL_TEXTURE_2D работать.Первоначально большинство изображений отображались как чисто белые, пока я не начал звонить

glTexParameteri(caps->extension, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(caps->extension, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

один раз за каждое нарисованное изображение, а не один раз за кадр.(С помощью RECTANGLE_EXT я могу использовать один раз для каждого кадра, и он отлично работает.)

Хорошо, теперь изображения отображаются.Проблема, однако, заключается в том, что они рисуют сплошным белым цветом после первого рисования текстуры.Затем после этого они рисуют правильно.Это приводит к множеству белых вспышек при первом рисовании изображений, и это разрешается при повторном использовании изображений.Есть идеи, что может вызвать это?

У меня в данный момент также включена округление "сила 2", поэтому все текстуры округляются до ближайшей степени 2 при первом создании.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Кто-то ответил на это на форумах SDL.«По умолчанию OpenGL ДОЛЖЕН включать mipmapping, если вы специально не скажете ему использовать GL_LINEAR или GL_NEAREST в glTexParameteri (), поэтому он будет белым, пока вы не установите его в противном случае».(т. е. мип-карты используются, но они не настроены.)

Другой автор написал: «Технически OpenGL ожидает (по умолчанию) загрузки всех мип-карт, например, вызова gluBuild2DMipmaps для каждой текстуры (даже 2D).UI art) или ваша собственная процедура mipmapping (мой выбор, намного быстрее, чем glu32.dll в Windows, по крайней мере), но, конечно, даже не требуется mipmapping для этих текстур (или потрачено 33% дополнительной памяти), так что этогораздо элегантнее просто изменить настройки glTexParameter. "

0 голосов
/ 16 декабря 2011

Означает, что некоторое требуемое для работы состояние устанавливается только после прорисовки первого кадра.Посмотрите учебники NeHe по текстурированию и как это сделать правильно.

...