Решается добавлением 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);
Большое спасибо!
Вам необходимо установить соответствующую функцию глубины с помощью glDepthFunc
используя что-то, что имеет «равно» в нем (возможно, GL_LEQUAL
), поскольку вы рисуете дважды на одной и той же глубине.
Вы также можете подумать о смешивании текстур внутри фрагментного шейдера.