2010-06-11 3 views
0
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 не вызывает никаких проблем), и у меня заканчиваются идеи. Есть предположения? Я могу отправить больше кода по мере необходимости.OpenGL под названием текстура не работает

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

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); 

ответ

2

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

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

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

+0

Эй Матиас, что это очень хороший момент, но в данном случае это не проблема, так как я использую GL_NEAREST. Я добавил свой код установки выше, чтобы уточнить. Как сказано, странно TexId = 0 - это единственный случай, который работает правильно для меня. – Meekohi

+0

Ага, однако мне нужно установить этот фильтр для КАЖДОЙ ТЕКСТУРЫ (duh). Проблема устранена после проверки работы glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); НЕМЕДЛЕННО после связывания текстуры и перед glTexImage2D(). :: вздох :: не было бы хорошо, если бы у openGL было какое-то разумное поведение в этом случае или, по крайней мере, вызвало ошибку ?! – Meekohi

+1

см. Более конкретно: http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture_.232.2C_glTexEnvi – Meekohi

Смежные вопросы