OpenGL именованные текстуры не работают - PullRequest
0 голосов
/ 11 июня 2010
glBindTexture(GL_TEXTURE_2D, texidx);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_FLOAT, texdata);

Если texidx == 0 все работает отлично, но если texidx != 0 или генерируется с использованием glGenTexture(&texidx,1), возможная визуализация показывает только сплошной цвет (последний glColor) вместо текстуры.Я отлаживал больше дня (glGetError не показывает никаких проблем), и у меня заканчиваются идеи.Какие-нибудь мысли?Я могу разместить больше кода при необходимости.

Код установки:

glEnable (GL_BLEND); 
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 

glDisable(GL_LIGHTING);  

glClearColor(0.5,0.5,0.5,0);
glClearDepth(1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
glDisable(GL_COLOR_MATERIAL);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

1 Ответ

2 голосов
/ 11 июня 2010

TexID не может быть нулем, это текстура по умолчанию или означает отсутствие текстуры.

Проблема заключается в том, что фильтр минимизации OpenGL по умолчанию использует мип-карты, но общая ошибка не дает их, замените фильтры MIN / MAG на что-то пригодное для использования, например GL_LINEAR или GL_NEAREST, и ваша текстура будет работать.

Дополнительная информация (и другие распространенные ошибки) обсуждаются в http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture

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