Помощь в написании студенческих работ
Антистрессовый сервис

Графический движок. 
Создание трехмерного графического движка для разработки игровых программ

РефератПомощь в написанииУзнать стоимостьмоей работы

Также в модуле dxGraph содержатся метод initSceneObj для инициализации объектов сцены и происходит загрузка эффектов, а также initObj для инициализации отдельного объекта. В зависимости от его типа загружается сетка, назначаются эффекты и техника отображения, а затем объекты размещаются на сцене с указанием их мировых матриц. Для загрузки шейдеров используется метод loadShader, а для финального… Читать ещё >

Графический движок. Создание трехмерного графического движка для разработки игровых программ (реферат, курсовая, диплом, контрольная)

Роль графического движка играет модуль dxGraph (Приложение 4). Он отображает сцену, создает и уничтожает объекты в ней. Класс dxGraph содержит следующие свойства:

  • — vAngle (угол просмотра камеры);
  • — objEffect (массив указателей на интерфейсы ID3DXEffect с шейдерами);
  • — objTechnic (массив техник отображения для шейдеров);
  • — objDev (указатель на устройство Direct3D);
  • — obj (массив объектов типа dxObj с объектами сцены);
  • — objVertex (указатель на интерфейс IDirect3DVertexDeclaration9 с описанием вершин для работы шейдера).

Также в модуле dxGraph содержатся метод initSceneObj для инициализации объектов сцены и происходит загрузка эффектов, а также initObj для инициализации отдельного объекта. В зависимости от его типа загружается сетка, назначаются эффекты и техника отображения, а затем объекты размещаются на сцене с указанием их мировых матриц. Для загрузки шейдеров используется метод loadShader, а для финального отображения всех объектов сцены — renderAll.

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

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

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

Для запуска движка в базовом приложении необходимо объявить глобальную переменную для хранения указателя на экземпляр модуля GraphicModule:

GraphicModule* gm.

Далее, после инициализации интерфейса Direct3D, необходимо указать устройство:

gm = new GraphicModule (dxDev).

Для отображения сцены в цикле обработки сообщения требуется вызвать метод CreateScene. В нем после начала формирования сцены с помощью метода BeginScene устройства dxDev очищается буфер, затем вызывается метод renderAll, а далее завершается формирование сцены и выводится результат.

В общем для отображения объекта на сцене необходимо пройти следующие этапы:

  • — создание массива описания вершин для отображения объекта с помощью шейдеров;
  • — загрузка сетки объекта
  • — загрузка эффектов объекта;
  • — загрузка техники отображения объекта;
  • — инициализация объекта;
  • — настройка видовой матрицы для объекта;
  • — установка формата вершин;
  • — вызов метода renderAll для визуализации объекта на сцене.
Показать весь текст
Заполнить форму текущей работой