Вітаю Вас ГостьП'ятниця, 17.05.2024, 09:03

CreateGames
Створення комп'ютерних ігор


Статті

Главная » Статьи » Игровые движки для языков программирования » GLScene для Delphi

Тени ShadowVolume
В GLScene есть три вида теней: Shadowplane, Shadowvolume и Shadowmaps.
Но из этих трёх видов самый лучший Shadowvolume, ща расскажк почему.

В GLScene есть три вида теней: Shadowplane, Shadowvolume и Shadowmaps.
Но из этих трёх видов самый лучший Shadowvolume, ща расскажк почему.
Shadowplane - это плоскость на которую падают тени от обьектов, и только на неё, на другие обьекты не падает. Shadowmaps - у них качество плохое, как в Counter-strike source (маленькое разрешение). Я выбрал Shadowvolume так как у них и качество хорошее, и на быстродействие не жалуемся.

Думаю пора начать...

Создайте в сцене несколько обьектов. Я создал Plane, Sphere и Cube. Разместите их так чтобы (будущая) тень падала от сферы на плоскость, а от куба на плоскость и сферу (это для примера, что тени падают "обьёмно"В).

Я сделал так:

 
title 
 
Теперь добавте на сцену ещё AsyncTimer. В таймере у нас будут отображаться FPS.
В GLScene Editor все обьекты должны быть в Shadowvolumе, для этого создайте его и перетащите в него все имеющиеся обьекты.
 
title
 
В FormCreate пишем:

Код
procedure TForm1.FormCreate(Sender: TObject);
begin
GLShadowVolume1.Active:=True;
end;




Вот этим мы разворачиваем форму на весь экран:
Код
Form1.BorderStyle:=bsNone;
form1.WindowState:=wsMaximized;


В настройках Shadowvolume (Object Inspector), в разделе Lights выбираем источник света (GLlightsource1). А именно: откроется окно Editing Shadowvolume1.lights, в нём создаём новую закладку и в Object inspector, в её свойствах выбираем источник света.
Далее, там-же в настройках, залазим в Occluders и в открывшемся окне надо подобовлять все те обьекты которые будут отбрасывать тень и на которые тена будут падать.
Всё, вот мы настроили наши тени, но если сейчас откомпилировать программу, то, есле Вы всё сделали правильно, тени отображаться не должны. Исправим это...
Один раз клацаем на GLSceneViewer1 и в Object Inspector'е лезим в Buffer (если полее новая версия делфи то OpenGL>>Buffer)>>Context Options>>roStencilBuffer нужно поставить True. Всё, теперь тени будут отображаться!
 
title
 
Теперь, если Вам очень хочется узнать производительность теней, то создадим в GLScene1 в разделе HUDObjects GLHUDText1. На форму добавим ещё один модуль (GLWindowsBitmapFont1) и в настройках Худ текста в BitmapFont выберем наш GLWindowsBitmapFont1. Теперь с координатами 0,0 у нас в левом верхнем углу добавился обьект худ текст. Теперь сделаем так чтобы в этом тексте отображалось колиество кадров в секунду. В таймере пишем:

Код
procedure TForm1.AsyncTimer1Timer(Sender: TObject);
begin
GLHudText1.Text := Format('%2.1f FPS,[GLSceneViewer1.FramesPerSecond]);
GLSceneViewer1.ResetPerformanceMonitor;
end;



Всё! Надеюсь эта статья помогла Вам в изучении GLScene!;)
Категория: GLScene для Delphi | Добавил: Hacker_xaker (26.05.2009) | Автор: Эдик E W
Просмотров: 2477 | Рейтинг: 5.0/2
Всего комментариев: 0
Имя *:
Email *:
Код *:
Категорія розділу
GLScene для Delphi [9]

Бесплатный Хостинг

EG Blocking 1.0 EG Blocking
Форма входу
Пошук
Наше опитування
Яку мову ви бажаєте вчити?
Всього відповідей: 110
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0

Створення комп'ютерних ігор доступно кожному. Всі щоденні новини ІТ технологій лише у нас.
Створи свою комп'ютерну ігру сам, разом із сайтом "Створення ігор" - "CreateGames.do.am". Щоденні новини ІТ технологій лише у нас і лише для вас.

CreateGames.do.am - Створення комп'ютерних ігор. Новини ІТ © 2009 - 2024 р.