2014-11-04 5 views
0

Say есть много различного зацепления с преобразованиями, что изменения более или менее каждый кадр, что бы вообще быть быстрее этими методы рисования:Рисование Сетки с Трансформацией

  1. Для каждого кадра заполнить большую вершину буфер с преобразованными вершинами сетки (преобразование выполняется на CPU и вершины, скопированные в буфер каждый кадр).
  2. Для каждого создания объекта вставляйте неотвержденные вершины сетки, затем при рисовании отправляйте преобразование каждой сетки в виде однородного параметра (преобразование, выполняемое на GPU, вершины копируются при создании сетки).

Мы можем предположить, что все сетки рисуются каждый кадр, а не копирование вершин для случая 1) не имеет значения.

ответ

0

Вариант №2 почти всегда будет быстрее. Если у вас есть N вершин и M преобразования, это разница между выполнением ~ N арифметических опс на процессоре с последующей передачей шины ~ N, по сравнению с делать ~ M передачи шины (быстрее), а затем by ~ N арифметические операции на графическом процессоре (также быстрее).

Единственный раз это было бы потерять, если ваш процессор был намного быстрее, чем ваш GPU с точки зрения общей пропускной способности для манипулирования вершин (очень маловероятно), или если M такой же порядок, как N ,

+0

Как насчет стоимости установки преобразования в качестве параметра шейдера униформы/констант для каждого кадра и каждого меша, как требуется в # 2, но не # 1? Это накладные расходы незначительны? –

+0

Это стоимость «~ M bus transfer», на которую ссылается мой ответ. Накладные расходы не являются незначительными в приложении, которое использует только подход № 2, но на несколько порядков меньше стоимости предварительного преобразования всей сетки, а затем выполняет другую передачу стоимости стоимости N. Это связано с тем, что большую часть времени N на много порядков больше, чем M, а также графические процессоры гораздо эффективнее при преобразовании на вершину, чем у процессоров. – MooseBoys

Смежные вопросы