Прозрачная текстура с OpenGL-ES 2.0 - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь добавить прозрачную текстуру поверх куба.Только передняя поверхность не прозрачна.Другие стороны прозрачны.В чем может быть проблема?.Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Я обнаружил, что лицо, которое нарисовано первым, является непрозрачным.

3 нарисована грань куба.

Непрозрачная грань. ((Индекс этой грани указан первым в GLdrawElements)) Непрозрачная http://s4.postimage.org/j1ye2wl5/opaque.png

Прозрачная грань Прозрачный http://s4.postimage.org/6axg763o/Transparent.png

1 Ответ

2 голосов
/ 18 августа 2011

Скорее всего, вы столкнулись с проблемой сортировки.Для правильного отображения прозрачной геометрии грани объекта должны быть отсортированы сзади вперед.

К сожалению, в opengl-es (или в любой существующей библиотеке gfx) встроенной поддержки для этого нет.Единственная возможность состоит в том, чтобы отсортировать полигоны, воссоздать ваш объект в каждом кадре и нарисовать его с правильно упорядоченными гранями.

Обходным путем будет использование аддитивной прозрачности вместо обычной прозрачности.Аддитивная прозрачность - это независимый от заказа расчет.Не забывайте отключать запись в z-буфер во время рисования, поскольку в противном случае некоторая геометрия может быть исключена.

Аддитивная прозрачность достигается путем установки обоих значений blendfunc на GL_ONE.

...