Инструменты пользователя

Инструменты сайта


blackbox:3d

Это старая версия документа!


Разработка приложений с применением OpenGL

Чтобы разрабатывать в Блэкбоксе приложения с трехмерной графикой, используя программный интерфейс OpenGL, удобно создавать окна с помощью библиотеки Sdl2. Кросс-платформенная библиотека Sdl2 также содержит необходимые средства, чтобы окна разрабатываемых приложений не зависели от оконной системы компонентного каркаса Блэкбокс и работали на различных платформах единообразно.

Настройка среды разработки

Чтобы установить расширение Sdl2 в Блэкбокс, скачайте закодированный файл с сайта: https://blackbox.oberon.org/extension/Sdl2

Откройте скачанный текстовый документ в Блэкбоксе и выберите команду Инструменты/Раскодировать. Файлы модулей и документация будут распакованы в рабочую директорию. Как правило у расширений Блэкбокса есть файл с документацией (Quick-Start). Откройте документ Sdl2/Docu/Quick-Start.odc, в котором найдете документацию на английском, как скомпилировать модули и откуда скачать бинарные файлы библиотек Sdl2.

Перед тем как откомпилировать модули подсистемы Sdl2, необходимо установить также непосредственно само расширение для работы с OpenGL: https://gitlab.molpit.org/bindings/Ogl. Распаковка производится таким же образом через команду Инструменты/Раскодировать.

После того как модули Ogl распакованы, запустите команды для компиляции модулей в зависимости от вашей платформы. Команды запускаются с помощью коммандеров (кружков с восклицательными знаками). Если пока не ориентируетесь в среде разработки Блэкбокс, то мы рекомендуем перед разработкой 3D-приложений освоить необходимые основы посмотрев учебник или видеоуроки.

Скачайте и распакуйте в рабочую папку необходимые библиотеки Sdl2. Ссылки для загрузки вы найдете в документе Sdl2/Docu/Quick-Start. Для Windows перезапуск среды не требуется. Для операционных систем на основе GNU/Linux необходимо перезапустить Блэкбокс, указав в переменной окружения LD_LIBRARY_PATH путь к файлам библиотек Sdl2 (пример bash-скрипта для запуска Блэкбокса также находится в документации, стоит лишь развернуть складку со знаками «+» в пункте 1.3).

После того, как библиотеки установлены, вы можете скомпилировать пример Sdl2ObxOpenGL.

```(!) DevCompiler.CompileThis Sdl2ObxOpenGL```

и запустить его командой:

```(!) Sdl2ObxOpenGL.Start```

Появится окно с квадратом, который залит градиентной заливкой.

Разбор примера Sdl2ObxOpenGL

Модуль Sdl2/Mod/ObxOpenGL.odc содержит реализацию пяти процедур:

Viewport — вызывает команды OpenGL для формирования проекции трехмерных объектов на экран.

PROCEDURE Viewport;
BEGIN
	Gl.Viewport(0, 0, width, height);
	Gl.MatrixMode(Gl.GL_PROJECTION);
	Gl.LoadIdentity;
	IF height = 0 THEN height := 1 END;
	Gl.Ortho(- zoom * width / height, zoom * width / height, - zoom, zoom, -1, 300);
END Viewport;

Render — вызывает команды для создания самих трехмерных объектов, а затем командой `Sdl2Video.GL_SwapWindow(w)` происходит обмен буферами рисования и показа в окне Sdl2, чтобы мы увидили проекцию этих объектов в окне.

PROCEDURE Render;
BEGIN
	Gl.MatrixMode (Gl.GL_MODELVIEW);
	Gl.ClearColor(0, 0, 0, 0);
	Gl.Clear(Gl.GL_COLOR_BUFFER_BIT + Gl.GL_DEPTH_BUFFER_BIT);
	
	Gl.LoadIdentity;
	Gl.Translatef( 0, 0, -6);
	Gl.Begin(Gl.GL_QUADS);
		Gl.Color3f ( 1, 0, 0);
		Gl.Vertex3f(-1, 1, 0);
		Gl.Color3f ( 0, 1, 0);
		Gl.Vertex3f(-1,-1, 0);
		Gl.Color3f ( 0, 0, 1);
		Gl.Vertex3f( 1,-1, 0);
		Gl.Color3f ( 0, 1, 1);
		Gl.Vertex3f( 1, 1, 0);
	Gl.End;

	Sdl2Video.GL_SwapWindow(w)
END Render;

Handle — обрабатывает события пользовательского ввода, измерения размеров окна, сигналы его показа и закрытия.

Do — является реализацией отложенных действий в каркасе Блэкбокс, которые позволяют путем рекурсивной установки нового действия в очередь вызывать периодическое обновления содержимого окна, если требуется перерисовка.

blackbox/3d.1577976340.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)