Улучшение производительности рендеринга Contour с использованием OpenGL? - PullRequest
2 голосов
/ 25 августа 2011

Пожалуйста, обратитесь к видео .

В моем приложении я отображаю стек контуров, используя DisplayList, созданный с помощью GL_LINE_STRIP.

Пользователь может выбрать контурные линии с помощью мыши. Для этого перед рендерингом DisplayList я отрисовываю все контуры с использованием уникального цвета и считываю пиксельный цвет под мышью (как объяснено здесь ). Этот рендеринг сделано с использованием "немедленного режима".

Пользователь также может перемещать, удалять выбранные контуры. В этом случае я воссоздаю DisplayList.

Мои вопросы:

1) Я использую старые методы OpenGL. (Фиксированная конвейерная архитектура.) Есть ли способы улучшить производительность, используя новые методы OpenGL? (используя GPU, шейдеры ... и т. д.) Потому что для большого числа контуров операции не являются плавными.

2) Я думаю, что рендеринг в «немедленном режиме», выполняемый для выбора контура, также является панелью производительности. Есть ли лучший способ сделать это?

3) Мне нужно отобразить узлы контура в виде облака точек, используя GL_POINTS. В этом случае я должен создать еще один DisplayList, используя GL_POINTS? (это означает, что есть два DisplayList; один для отображения линий, другой для отображения точек)?

1 Ответ

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

Отход от списков отображения и переключение на массивы вершин (VA) или объекты буфера вершин (VBO) должны дать вам приличное ускорение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...