Skip to content

pmpknu/ogl-renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ogl-renderer

OCaml OpenGL renderer

Лабораторная работа #4

  • Тема: Просмотр моделей через OpenGL
  • Преподаватель: Пенской Александр Владимирович
  • Выполнил: Горляков Даниил Петрович, 367165
  • ИТМО, Санкт-Петербург, 2025

Описание работы

Данная лабораторная работа направлена на изучение основ 3D графики и применение функционального программирования для создания графических приложений.

Основные компоненты:

  1. Система рендеринга с использованием современного OpenGL
  2. Загрузка и отображение 3D моделей через библиотеку ASSIMP
  3. Реализация камеры и управления сценой
  4. Система шейдеров и текстурирования

Структура проекта

  • bin/ — основная точка входа в приложение
  • lib/ — основные модули
    • render/ — модули рендеринга (шейдеры, текстуры, модели)
    • math/ — математические утилиты (векторы, матрицы, камера)
  • test/ — тесты для проверки функциональности
  • resources/ — ресурсы (модели, текстуры)

Реализация компонентов

Запуск проекта

OCaml packages

opam install tgls stb_image assimp ppx_inline_test

Сборка и запуск

Сборка проекта

dune build

Запуск приложения

dune exec _build/default/bin/main.exe

Управление

  • W/A/S/D: Движение камеры
  • Левая кнопка мыши + перемещение: Осмотр сцены
  • Прокрутка мыши: Масштабирование
  • ESC: Выход

Выводы

Разработка 3D приложения на OCaml с использованием OpenGL позволила глубже понять как основы компьютерной графики, так и особенности функционального программирования при работе с графикой. Основные наблюдения:

  1. OCaml ПЛОХО подходит для создания графических приложений
  2. Что и правда выручило, система типов OCaml помогает избежать многих ошибок на этапе компиляции

Лицензия

MIT License

deps

opam:

glfw-ocaml 3.3.1-2

tgls 0.8.6

ocaml 5.0.0

dune 3.17.2

About

OCaml OpenGL renderer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published