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

Глава 27. Использование чистого OpenGl.

GLScene является надстройкой над интерфейсом OpenGL, но это не означает, что он может его (интерфейс) полностью заменить. Поэтому существует возможность вставлять фрагменты на чистом OpenGL. Для этой цели служит GLDirectOpenGL.

Сделаем небольшое приложение с использованием чистого OpenGL и GLScene.

Поместим на форму:

GLScene1, создадим в нём камеру, присвоим свойство GLCamera1.Position.Z = 4,

GLSceneViewer1, свойству Camera присвоим нашу камеру.

Короче, ничего нового - всё как обычно

А теперь создаём в GLScene1 объект .

Строки чистого OpenGL нужно вставлять в событие OnRender.

Попробуем вывести на экран плоскость, которую запрограммируем на OpenGL. Чтобы компилятор понимал команды чистого OpenGL, подключите модуль OpenGL1x.

procedure TForm1.GLDirectOpenGL1Render(Sender: TObject;

var rci: TRenderContextInfo);

begin

glLoadIdentity; // заменяем текущую матрицу на единичную.

glTranslatef(0.0, 0.0, -8.0);

glBegin(GL_POLYGON);//Начало операторный скобки. Она определяет, что вершины будут объединены

glVertex3f(1.0, 1.0, 1.0); //Рисуем вершину

glVertex3f(-1.0, 1.0, 1.0); //Рисуем вершину

glVertex3f(-1.0, -1.0, 1.0); //Рисуем вершину

glVertex3f(1.0, -1.0, 1.0); //Рисуем вершину

glEnd; //Конец операторной скобки

end;

Всё! Запускаем и смотрим на эту плоскость.

Когда вы создадите событие OnRender и попробуете туда что-либо написать, компилятор

возможно выдаст вам ошибку. Это несложно исправить: подключите к вашему проекту модуль GLRenderContextInfo и всё будет работать.

Глава 28. Звуки.

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

I. Проигрывание звуков с помощью bass

Перетащите на форму GLSMBASS и GLSoundLibrary (здесь и дальше будет подразумеваться, что основные компоненты, такие как GLScene, GLCadencer, GLSceneViewer уже находятся на форме). Для работы потребуется файл bass.dll скопируйте его в папку с вашим проектом.

У GLSMBASS установите следующие свойства:

Cadenser:= GLCadencer1; Active:=True;

Добавить звуковой файл в GLSoundLibrary можно через инспектор объектов или вот так:

GLSoundLibrary1.Samples.AddFile('имя файла.wav');

Далее нам потребуется два объекта: один издает звук, а другой слушает. Пусть слушателем будет сфера:

GLSMBASS1.Listener:= GLSphere1;

А звучать будет куб:

with GetOrCreateSoundEmitter (GLCube1) do begin Source.SoundLibrary:=GLSoundLibrary1; Source.SoundName:=''имя файла.wav''; Playing:= True;

end;

II. Проигрывание звуков с помощью fmod

Работает почти также как и BASS. Для работы потребуется файл fmod.dll, на форму нужно поместить не GLSMBASS, а GLSMFMOD.

III. Проигрывание звуков с помощью OpenAl

OpenAL (Open Audio Library) — свободно распространяемый аппаратно-программный интерфейс (API) для работы с аудиоданными. Ключевой особенностью является работа со звуком в 3D пространстве и использование эффектов окружающей среды (EAX). Поддерживается компанией Creative.

Для проигрывания звуков с помощью OpenAL есть специальный компонент GLSMOpenAL.

Хорошую демку можно посмотреть в стандартной папке Demos по адресу …\Demos\sound\3Dsound