Проблемы OpenGL 3.2 2D рендеринга

артефакт рендеринга 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.

Какие-нибудь мысли?

Спасибо!

1

Решение

Решил проблему, я не отменял привязку буферов массива / элемента после вызова glDrawElements.

Пришлось поставить это после glDrawElements:

glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector