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

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

Задание разработчиком приложения различного формата вершин тоже является настройкой графического конвейера, но она решает не задачу распределения функций между основным процессором и ускорителем, а задачу распределения функций между приложением и библиотекой. Так, для задания информации,


⇐ Предыдущая| |Следующая ⇒