Список отображения лучше для этого? (OpenGL) - PullRequest
0 голосов
/ 13 июня 2010

Я рендеринг 2D-полигонов с помощью GLUTesselator в первый раз, затем они сохраняются в списке отображения для последующего использования. Я думаю, что VBO может быть быстрее, но так как я не могу получить доступ к материалам, которые выводит тесселатор, и поскольку он использует смеси gl_triangle, quad, strip и т. Д., Я не уверен, как я мог бы это сделать, хотя я хотел бы использовать VBO, как только GLUTesselator сделан с ними для оптимальной производительности. Спасибо

Ответы [ 3 ]

1 голос
/ 13 июня 2010

Поскольку ваша геометрия 2D, списки отображения, вероятно, являются лучшим выбором.

  • У вас уже есть они работают.
  • Карты, достаточно новые для поддержки FBO, достаточно быстрые, поэтому даже если списки отображения имеют 1/10 скорости FBO, они все равно будут достаточно быстрыми
  • Списки отображения также работают на старых картах, которые не поддерживают FBO, но все еще достаточно быстры для двумерной геометрии
1 голос
/ 13 июня 2010

Прошло много времени с тех пор, как я использовал тесселятор GLU, но, насколько я помню, он просто добавляет стандартные треугольники в ваш список вершин.Одна из функций обратного вызова, которую вы передадите ей, будет получать новые вершины и помещать их куда-нибудь.Это происходит в вашем коде, поэтому данные не скрыты от вас.

Отображение списков лучше, чем рендеринг в непосредственном режиме, но, как правило, это очень плохой выбор по сравнению с VBO.

Обновление: Драйверы OpenGL для "профессионального" рынка, такие как Quadro и FireGL, будут прикладывать больше усилий для реализации своего списка отображения, чем карты уровня потребителя.Но даже тогда количество оптимизации, которую они могут сделать, намного меньше, чем думают 3D-программисты старой школы из дней SGI.Предполагается, что список отображения должен отражать изменения состояния и другие факторы, но при этом учитываются другие состояния, которые могут изменяться независимо от списка отображения.

Прошло несколько лет с тех пор, как у меня была точная информация о текущих реализациях драйверов,но в какой-то момент список отображения будет содержать ваши данные геометрии в программном обеспечении и загружать их как обычный массив вершин, поскольку может потребоваться знать определенные состояния gl для корректировки данных перед загрузкой в ​​память GPU.По сути, список отображения дает вам теоретическую гибкость, позволяющую вносить изменения во время выполнения, которые он должен знать, прежде чем загружать данные.VBO блокирует формат таким образом, чтобы он сразу попадал в память во время создания.

0 голосов
/ 13 июня 2010

Я не согласен с Аланом в том, что списки отображения всегда очень плохой выбор по сравнению с VBO. Я вижу, что это сильно зависит от драйвера и фактического использования, а в некоторых случаях DL может быть даже лучше. Итак, если бы вы могли как-то пойти на VBO, думаю, вам следует - но так как вы все равно используете «устаревшие» GLUTesselator, я думаю, что оставаться с DL совсем не так уж и плохо.

Я еще не пробовал, но я нашел этих людей, сравнивающих VBO и DL: http://www.mofeel.net/312-comp-graphics-api-opengl/1470.aspx

Возможно, вы захотите попробовать себя. Я помню из последнего теста для практического случая из моей работы, я не заметил разницы между DL и VBO на топовом оборудовании. Как уже упоминалось, я думаю, что это зависит от драйвера и использования, хотя.

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