артефакт рендеринга http://byte-werx.com/rendering-artifact.png
Я буду первым, кто признает, что я не программист графики, поэтому, пожалуйста, держись со мной 🙂
По какой-то необычной причине, когда я создаю две партии спрайтов и пытаюсь рисовать дважды на одном кадре, половина моего экрана (или около того) теряется; это происходит независимо от положения маленького спрайта у костра.
При рендеринге в режиме каркаса получаются те же результаты, поэтому не похоже, что гигантский черный полигон прорисовывается и перекрывает нижележащую карту тайлов.
Это код, используемый для инициализации OpenGL:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnableClientState(GL_VERTEX_ARRAY);
glActiveTexture(GL_TEXTURE1);
glActiveTexture(GL_TEXTURE0);
glDepthRange(0.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glDepthFunc(GL_LEQUAL);
glDisable(GL_DITHER);
glClearDepth(1.0f);
glEnable(GL_CW);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Я загрузил соответствующий код здесь: скачать
SDL2 используется для создания окон и управления контекстом, однако я не использую ничего из SDL.
Какие-нибудь мысли?
Спасибо!
Решил проблему, я не отменял привязку буферов массива / элемента после вызова glDrawElements.
Пришлось поставить это после glDrawElements:
glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);