2013-08-12 2 views
1

У меня есть 3D-приложение, в котором в настоящее время используется OpenGL ES 1.1, большинство ячеек жестко привязаны к приложению и являются статическими (они не перемещаются), поэтому проверка глубины позволяет эффективно рисовать прозрачную геометрию , используя проводную сортировку.Ускоренная геометрия OpenGL ES 2.0 GPU

Теперь я хочу загрузить мир из 3D-редактора и добавить некоторые прозрачные динамические объекты (геометрия может быть в любом произвольном порядке), что заставляет тест глубины рисовать «дыры» в геометрии со спины, который визуализируется после геометрии спереди с использованием теста глубины OpenGL ES 1.1.

Я скоро перейду на OpenGL ES 2.0, поэтому я задаюсь вопросом, есть ли ускоренная сортировка графического процессора, чтобы нарисовать геометрию на оборотной стороне, чтобы смешение было сделано правильно.

ответ

3

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

+0

См. [Этот экстракт] (http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter46.html). Я совершенно не знаком с OpenGL ES Shading Language, но, похоже, что я хочу не так далеко от этих реализаций. – rraallvv

+1

Ну, это кажется трудным. Сделайте это, если посмеете :) Хотя вы можете добиться быстрой сортировки с помощью такого метода, на практике чтение цветовых данных назад из фреймбуфера обычно настолько дорого, что может сделать такую ​​оптимизацию бесполезной. – keaukraine

+0

@rraallvv Ну, вы, возможно, сможете реализовать какой-то алгоритм сортировки GPGPU для своих нужд, но OpenGL не имеет ничего подобного (изначально он не сортирует ваши объекты с OpenGL, а скорее сортируя их по традиционному алгоритму сортировки и злоупотребляя шейдерами OpenGL для вычислительных задач), и я бы не стал делать ставку на то, что принесло бы вам какое-либо преимущество для ваших немногих объектов (не говорите мне, что ваш мир имеет множество объектов, не в лигах 1е5 или 1е6, по крайней мере). –