OpenGL и GL_Blend с glDrawElements

Решается добавлением glDepthFunc (GL_ALWAYS);

Я пытаюсь смешать две текстуры на высоте с glDrawElements, Данные Normalpointer и vertexpointer одинаковы, но TexCoordPointer различны для двух текстур. Независимо от того, какой BlendFunc я пробую, всегда видна только одна из текстур, хотя большие части texture_two прозрачны. Есть ли glDrawElements работать с gl_blend или я делаю это неправильно?

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
glDepthFunc(GL_ALWAYS);

glNormalPointer(GL_FLOAT, 0, normals);
glVertexPointer(3, GL_FLOAT, 0, vertices);

glTexCoordPointer(2, GL_FLOAT, 0, texture_ind_one);
glBindTexture(GL_TEXTURE_2D, texture_one);
glDrawElements(GL_TRIANGLES, indicies_num, GL_UNSIGNED_INT, indices);

glNormalPointer(GL_FLOAT, 0, normals);
glVertexPointer(3, GL_FLOAT, 0, vertices);

glTexCoordPointer(2, GL_FLOAT, 0, texture_ind_two);
glBindTexture(GL_TEXTURE_2D, texture_two);
glDrawElements(GL_TRIANGLES, indicies_num, GL_UNSIGNED_INT, indices);

Большое спасибо!

0

Решение

Вам необходимо установить соответствующую функцию глубины с помощью glDepthFunc используя что-то, что имеет «равно» в нем (возможно, GL_LEQUAL), поскольку вы рисуете дважды на одной и той же глубине.

Вы также можете подумать о смешивании текстур внутри фрагментного шейдера.

3

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


По вопросам рекламы [email protected]