Это старая версия документа!
Чтобы разрабатывать в Блэкбоксе приложения с трехмерной графикой, используя программный интерфейс 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```
Появится окно с квадратом, который залит градиентной заливкой.
Модуль 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, чтобы мы увидили проекцию этих объектов в окне.
Handle — обрабатывает события пользовательского ввода, измерения размеров окна, сигналы его показа и закрытия.
Do — является реализацией отложенных действий в каркасе Блэкбокс, которые позволяют путем рекурсивной установки нового действия в очередь вызывать периодическое обновления содержимого окна, если требуется перерисовка.