Рендеринг объекта, который частично непрозрачен и частично полностью прозрачен.C++

Программы на C++. Форум разработчиков
Anonymous
 Рендеринг объекта, который частично непрозрачен и частично полностью прозрачен.

Сообщение Anonymous »

У меня возникла проблема при попытке отрисовать прозрачный объект. У меня только одна сетка, поэтому один вызов отрисовки, и если объект немного сложный, например растение, я могу видеть сквозь объект, вы можете видеть, что мы видим листья на вершине большого объекта, но обычно они находятся сзади.
Код моей функции рисования:

Код: Выделить всё

glDepthFunc(GL_LESS);
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthMask(GL_FALSE);

glBindVertexArray(subMesh.VAO);
glDrawElements(GL_TRIANGLES, subMesh.index_count, GL_UNSIGNED_SHORT, 0);
Кто-нибудь знает, в чем проблема?
Мой движок поддерживает фиксированный конвейер и шейдеры, мне бы хотелось решение, которое работает с обоими методами.
Изображение

Если для glDepthMask установлено значение GL_TRUE
Изображение

Это рендеринг Я хочу
Изображение

Похоже, в Unity существует та же проблема, когда режим рендеринга установлен на Fade и Transparent, но у меня нет проблем, когда я устанавливаю его на < strong>Вырез. Может быть, решением будет создание системы вырезов?
Я пытался масштабировать объект, уменьшить дальнюю плоскость, поэтому не думаю, что это проблема с точностью глубины.
Я тоже пытался использовать glDepthFunc(GL_LEQUAL);.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ransparent

Вернуться в «C++»