Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по GLScene.doc
Скачиваний:
255
Добавлен:
16.12.2018
Размер:
7.18 Mб
Скачать

Глава 6. Движение.

Простое движение камеры рассмотрим на примере. Очистите у камеры свойство TargetObject, чтобы мы могли сами управлять направлением взгляда камеры. Подключите модуль GLKeyboard (в старых версиях keyboard), для работы с клавиатурой. В каденсере напишем процедуру перемещения камеры при нажатии клавиш на клавиатуре:

Procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);

Begin

if IsKeyDown(VK_ESCAPE) then Close;

//Движение вперед по клавишам ‘ц’ и’ w’

if (IsKeyDown('ц') OR IsKeyDown('w')) then GLCamera1.Move(2*d);

//Движение назад по клавишам ‘ы’ и ‘s’

if (IsKeyDown('ы') OR IsKeyDown('s')) then GLCamera1.Move(-2*d);

//Поворот влево по клавишам ‘ф’ и’ a’

if (IsKeyDown('ф') OR IsKeyDown('a')) then GLCamera1.slide(-2*d);

//Поворот вправо по клавишам ‘в’ и ‘d’

if (IsKeyDown('в') OR IsKeyDown('d')) then GLCamera1.slide(2*d);

//Движение вверх по клавишам ‘u’ и ‘г’

if (IsKeyDown('u')) OR IsKeyDown(‘г’) then GLCamera1.Lift(0.01)

//Движение вниз по клавишам ‘n’ и ‘т’

if (IsKeyDown('n')) OR IsKeyDown(‘т’) then GLCamera1.Lift(-0.01)

end;

Теперь запускаем проект и видим, что мы можем перемещать камеру по сцене.

Воспользуемся стандартным способом работы с мышью.

Переместите из вкладки GLScene Utils на форму GLNavigator. У него в свойстве MovingObject выберите GLCamera1 (это объект, который будет перемещаться).

Добавьте на форму GLUserInterface1 из вкладки GLScene Utils, в свойстве GLNavigator

выберете GLNavigator1. Свойство MouseSpeed – это скорость реакции мыши, сделаем её равным 10.

Теперь нужно скрыть курсор мышки. Для этого в событие OnCreate формы добавьте такую строчку:

GLUserInterface1.MouseLookActive:=true; //Активировать Обзор мышью А в событии OnProgress Cadencer’а добавить строчки: GLUserInterface1.Mouselook; //Обзор мышью GLUserInterface1.MouseUpdate; //Обновить мышь

Всё. Запускаем проект и смотрим, что получилось.

Глава 7. Как узнать, сколько сейчас fps?

FPS – Frames Per Second (количество кадров в секунду) – очень важный параметр для определения

быстродействия графического проекта. При очень маленьких значениях FPS игра начинает "идти скриншотами".

Количество кадров в секунду возвращает метод FramesPerSecond.

Пример:

Поместите на форму таймер из вкладки System. Задайте у него свойство Interval=100. В его событии

OnTimer введите следующие строчки:

Caption:=Format('%.1f FPS', [GLSceneViewer1.FramesPerSecond]); GLSceneViewer1.ResetPerformanceMonitor;

Первая строчка выводит в заголовке формы количество FPS, вторая делает так, чтобы выводилось не среднее значение FPS, а текущее.

Глава 8. Полноэкранный режим.

Для полноэкранного режима используется компонент GLFullScreenViewer, поместите его на форму. В свойстве Camera установите камеру, через которую будет выводиться изображение. Переход в полноэкранный режим:

//укажите эту команду, если хотите оставить текущее разрешение

GLFullScreenViewer1.UseCurrentResolution;

//активация полноэкранного режима

GLFullScreenViewer1.Active:=True;

Ну и соответственно выход из полноэкранного режима:

GLFullScreenViewer1.Active:= False;

Количество FPS можно узнать процедурой GLFullScreenViewer1.Buffer.FramesPerSecond.

Многие не используют компонент GLFullScreenViewer, а просто растягивают форму на весь экран и убирают заголовок окна. Я считаю, что лучше всё же пользоваться GLFullScreenViewer, так как в этом случае существует возможность управлять разрешением. А при уменьшении разрешения fps увеличиваются.

Если не указывать команду UseCurrentResolution, то установится разрешение GLSceneViewer1.Width* GLSceneViewer1.Height.