Лучший метод для обработки вершин в OpenGL? C ++ - PullRequest
7 голосов
/ 27 июня 2011

Я использую рендер для Quake. Я в настоящее время бегаю по массивам вершин и отправляю их по одному за раз. Мне сказали, что используя массивы вершин, я могу значительно ускорить процесс рендеринга, посылая вершины в пакете. Теперь я только что посмотрел на списки отображения и, наконец, объекты VBO или буфера вершин. VBO упоминает большое преимущество по отношению к клиент-серверной коммуникации. Если я просто собираюсь разрабатывать клиент, а не сервер, VBO по-прежнему применимо к тому, что я делаю?

Какие игры используют в настоящее время в спектре OpenGL для быстрой обработки вершин?

Ответы [ 2 ]

10 голосов
/ 27 июня 2011

Когда говорят "клиент / сервер", они не имеют в виду интернет-сеть.

  • Клиент = ЦП
  • Сервер = Аппаратное обеспечение GFX

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

Краткая история: Использование объектов Vertex Buffer,Для статических данных (например, карты Quake) нет ничего лучше.Вершины отправляются на графическое устройство (сервер) один раз и остаются там.Когда вы рисуете вещи вершина за вершиной (используя что-то вроде glBegin(GL_TRIANGLES)), вершины передаются через каждый кадр , что, как вы можете себе представить, довольно неэффективно.

3 голосов
/ 27 июня 2011

VBOs - современный ответ.

Не поймите неправильно термины «клиент» и «сервер» в смысле OpenGL. Это не разница между Apache (HTTP-сервер) и Chrome (HTTP-клиент, между прочим). С точки зрения OpenGL, клиент - это вы / ваш код. Сервер является графическим драйвером / аппаратным обеспечением.

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

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

...