OpenglES - прозрачные текстуры, блокирующие объекты позади - PullRequest
6 голосов
/ 01 сентября 2011

У меня есть несколько четырехугольников, которые имеют текстуру с прозрачностью, и некоторые объекты позади этих четырехугольников. Тем не менее, они не показываются. Я знаю, что это что-то о GL_BLEND, но мне не удается показать объекты позади.

Я пробовал с:

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_BLEND);

но все еще не работает. Что у меня в основном есть:

// I paint the object
draw_ac3d_file([actualObject getCurrentObject3d]);

// I paint the quad
paintQuadWithAlphaTexture();

1 Ответ

6 голосов
/ 01 сентября 2011

Существуют два распространенных сценария, которые создают эту ситуацию, и трудно сказать, какой из них выполняет ваша программа, если вообще существует.

Порядок прорисовки

Во-первых, убедитесь, что вы рисуете ваши объекты в правильном порядке.Вы должны нарисовать от задом наперед , иначе модели не будут смешаны должным образом.

http://www.opengl.org/wiki/Transparency_Sorting

примечание как Арне БергенФоссаа отметил, что спереди назад - правильный способ визуализации объектов, которые не прозрачны с точки зрения производительности.Из-за этого большинство средств визуализации сначала рисуют все модели, у которых нет прозрачности спереди назад, а затем возвращаются назад и визуализируют все модели с прозрачностью спереди назад.Это описано в большинстве 3D-графических текстов.

задом наперед

enter image description here

спереди к-обрат

enter image description here

кредит изображения Джеффу Личу в Университете RMIT

Освещение

Второй наиболее распространенной проблемой является неправильное использование освещения.Обычно в этом случае, если вы используете конвейер с фиксированными функциями, люди советуют вам просто позвонить glDisable(GL_LIGHTING);

Теперь это должно работать (если это вообще является причиной), ноЧто делать, если вы хотите освещение?Тогда вам придется либо использовать пользовательские шейдеры, либо настроить соответствующие параметры материала для моделей.

Обсуждение использования свойств материала можно найти по адресу http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=285889

...