Как создать альфа-смешение без стека с объектами в openGL - PullRequest
0 голосов
/ 24 августа 2011

В настоящее время я создаю игру для iPhone, используя OpenGL ES 1.1 и drawTriangleStrip, чтобы нарисовать большую линию, которая закручивается вокруг экрана и довольно часто перекрывает себя.

Проблема в том, что я не хочу, чтобы альфа складывалась, поскольку линия перекрывает себя. В настоящее время я получаю альфа-смешение следующим образом:

изображение альфа-стека

Но я действительно хочу, чтобы это сливалось так:

альфа-плоское изображение

Я пытался использовать варианты glBlendFunc, но мне не особо повезло. Если кто-нибудь из вас, гуру openGL, сможет показать мне, как вы добьетесь вышеописанного смешивания, это было бы здорово.

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

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

0 голосов
/ 24 августа 2011

То есть вы хотите, чтобы он сливался с фоном, но только если смешивание с фоном еще не произошло?

Возможно, вы можете сделать это с помощью обратной сортировки по глубине: визуализируйте все непрозрачные объекты, а затем визуализируйте альфа-объекты, начиная с ближайшего и заканчивая самым дальним.Вам нужно будет установить glDepthFunc() на GL_LESS вместо GL_LEQUAL (если эта опция существует в GL-ES ...).Тогда буфер глубины должен отклонять альфа-фрагменты, если там уже есть альфа.

...