Иерархические графические модели
Граф сцены, который мы только что рассмотрели, эквивалентен тексту OpenGL-программы в том смысле, что можно чисто механически написать текст программы, имея перед глазами этот граф. Такой подход реализован в надстройке над OpenGL - объектно-ориентированном API Open Inventor. Программой для Open Inventor является описание дерева сцены. Выполнение программы организовано как обход графа сцены и вызов необходимых функций OpenGL.
Граф сцены очень хорошо сочетается с идеями объектно-ориентированного программирования. Все объекты, представленные узлами графа (примитивы, атрибуты, преобразования), можно реализовать в виде отдельных классов и манипулировать экземплярами этих классов в программе обхода графа. Более того, такой подход позволяет легко организовать анимацию. Изменяя определенные параметры отдельных объектов, можно получать последовательные фазы движения персонажей, повторно запускать после этого программу обхода графа и выводить на экран следующий кадр мультфильма. В Open Inventor программные объекты реализованы с помощью функций OpenGL, а граф сцены представляет собой базу данных, которая включает все элементы сцены. OpenGL выступает в роли средства создания изображения, но не принимает никакого участия в спецификации сцены. В этом смысле Open Inventor очень напоминает систему PHIGS: задача прикладной программы в этой графической системе состоит в том, чтобы поместить описания объектов в базу данных. Часть базы данных может быть отослана на рабочую графическую станцию, которая и берет на себя все заботы, связанные с формированием изображения сцены.
Программные графические системы занимают один из уровней в иерархии, представленной на рис. 8.19.
Такие системы, в частности OpenGL, берут на себя функции формирования изображения и могут управлять либо непосредственно аппаратными средствами отображения, либо программными средствами более нижнего уровня иерархии. В качестве последних могут использоваться программные продукты, функциональные возможности которых аналогичны программе DirectX фирмы Microsoft. Прикладная программа занимает в этой иерархии самый верхний уровень.