Поделиться через


Примитивы и команды

OpenGL рисует примитивные точки, сегменты линий или многоугольников, подлежащие нескольким режимам выбора. Режимами можно управлять независимо друг от друга. Это значит, что установка одного режима не влияет на то, заданы ли другие режимы (хотя многие режимы могут взаимодействовать, чтобы определить, что в конечном итоге попадает в framebuffer). Чтобы указать примитивы, задать режимы и выполнить другие операции OpenGL, выполните команды в виде вызовов функций.

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

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