OpenGL ES 2D - z-упорядочение, буфер глубины и чертеж по порядку - PullRequest
9 голосов
/ 18 января 2012

Я совершенно новичок в OpenGL, так что извините, если это глупый вопрос.Также не знаю, имеет ли это значение, на всякий случай я использую OpenGL ES 1.1.

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

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

Я читал, что буфер глубины может повлиять на производительность, но изменил бы и порядок.Что мне делать?

1 Ответ

9 голосов
/ 18 января 2012

Короткий ответ - сортировка спрайтов.

Звучит так, будто вы создаете что-то действительно на основе 2D, и хотя z-буфер может быть очень полезным инструментом, он может быть впечатляющимнажмите, если оборудование не поддерживает его, и если вы на самом деле не используете 3d-объекты, которые могут пересекаться друг с другом, это не имеет большого смысла для меня.

Кроме того, если выиметь какие-либо спрайты, которые являются частично прозрачными, то есть имеют пиксели со значением альфа, которое не равно 0 или 255 (или 0,0 или 1,0, если используется плавающая точка), тогда вам придется сортировать в любом случае.Я считаю, что потеря производительности при смене «спрайтов» происходит только при переключении поверхностей и только редко.Один из способов помочь решить эту проблему - разместить как можно больше разных спрайтов на одном изображении в сетке и использовать маленькие кусочки вашей поверхности в качестве спрайтов.

...