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);
Эй Матиас, что это очень хороший момент, но в данном случае это не проблема, так как я использую GL_NEAREST. Я добавил свой код установки выше, чтобы уточнить. Как сказано, странно TexId = 0 - это единственный случай, который работает правильно для меня. – Meekohi
Ага, однако мне нужно установить этот фильтр для КАЖДОЙ ТЕКСТУРЫ (duh). Проблема устранена после проверки работы glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); НЕМЕДЛЕННО после связывания текстуры и перед glTexImage2D(). :: вздох :: не было бы хорошо, если бы у openGL было какое-то разумное поведение в этом случае или, по крайней мере, вызвало ошибку ?! – Meekohi
см. Более конкретно: http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture_.232.2C_glTexEnvi – Meekohi