В прошлой заметке мы нарисовали треугольник с использованием практически голого OpenGL. Начнем теперь видоизменять программу. Цель — сделать ее более простой для понимания и менее подверженной ошибкам. Предпосылки для написания своего фреймворка У приведенной в прошлой заметке программы рисования треугольника есть следующие потенциальные возможности для улучшения: Очень много вызовов всяких функций, выполняющих очень мелкие операции в рамках некой сравнительно крупной задачи. Например, чтобы скомпоновать шейдерную программу, надо вызвать функции glCreateProgram, glAttachShader, glLinkProgram, glDetachShader. Ясно, что в подобных случаях все эти Читать дальше …
Метка: C/C++
Опыт изучения OpenGL — Часть 5 — Рисуем треугольник
В предыдущих заметках мы провели всю необходимую подготовку для того, чтобы начать рисовать. Рисовать начнем с треугольника (так поступают авторы большинства книжек по OpenGL). На примере рисования треугольника мы обсудим ряд базовых концепций компьютерной графики. Пока речь не пойдет о трехмерном пространстве, наш треугольник не будет поворачиваться, и на него нельзя будет взглянуть под произвольным углом. Литература Настоятельно рекомендую вам главы из нижеследующих книг перед чтением этой заметки (или после чтения): Jason McKesson — Learning Modern 3D Graphics Programming. — Читать дальше …
Опыт изучения OpenGL — Часть 4 — Класс engine::ProgramBase
Я продолжаю рассказывать о написанном мною рисовательном API на базе OpenGL, размещенном в открытом репозитории на хостинге BitBucket. К сожалению, написание программы с помощью OpenGL требует существенной предварительной артподготовки в виде Загрузки функций OpenGL (инициализации библиотеки GLEW) Создания окна Создания контекста OpenGL В сегодняшней заметке я освещу класс engine::ProgramBase, который собирает все перечисленные этапы воедино, и в следующих заметках перейду непосредственно к рисованию. Задачи класса ProgramBase Все программы, которые что-то рисуют при помощи OpenGL, как оказалось, имеют ряд общих черт. Читать дальше …
Опыт изучения OpenGL — Часть 3 — Создание контекста рисования
В предыдущих двух заметках я рассказал о том, как загрузить функции OpenGL (проинициализировать библиотеку GLEW) и как создать окно, в котором мы будем рисовать. Но для рисования нам потребуется так называемый OpenGL context — «an object that holds all of OpenGL» — он уже упоминался в первой заметке. Повторим вкратце основные факты о контексте OpenGL: Контекст обладает состоянием. Его состояние определяет, что будет нарисовано на экране. Изменить (повлиять на) это состояние могут только функции API OpenGL. Т. е. контекст можно Читать дальше …
Опыт изучения OpenGL — Часть 2 — Окно
В прошлой заметке я начал рассказывать про свой опыт изучения OpenGL и остановился на том, что проинициализировал библиотеку GLEW, которая загружает все функции API OpenGL. Чтобы начать рисовать что-либо при помощи OpenGL, нам нужно то, на чем можно рисовать, а именно — окно. Ему и посвящена настоящая заметка. Работа окна имеет непосредственное отношение к используемой нами операционной системе, в моем случае — Windows. Поэтому в коде активно используется WinAPI. Исходный код проекта по изучению OpenGL находится в открытом репозитории. Литература Читать дальше …
Опыт изучения OpenGL — Часть 1 — Введение
С детства мечтал писать компьютерные игры, и вот, года три назад решил рискнуть — поизучать OpenGL. Почему взялся изучать не игровой движок, а низкоуровневый API (API — Application Programming Interface)? Потому что люблю изучать все с как можно более низкого уровня, чтобы разобраться как оно работает (например, изучение языка ассемблера Intel очень помогло моему пониманию языков Си и C++). А почему OpenGL, а не DirectX? — Просто по OpenGL я смог найти больше литературы, чем по DirectX. Изучать OpenGL — Читать дальше …
C/C++ в Cygwin
Эта короткая заметка — о том, как начать программировать на языках C и C++ в среде Cygwin. Об установке Cygwin читайте тут. Установка средств разработки Чтобы начать программировать, вам понадобятся компиляторы соответствующих языков и отладчик; пригодится также утилита make. Поэтому запустите программу установки Cygwin (setup.exe) и в диалоге Select Packages выберите следующие пакеты из категории Devel: gcc-core: GNU Compiler Collection (C, OpenMP) gcc-g++: GNU Compiler Collection (C++) gdb: The GNU debugger make: The GNU version of the ‘make’ utility Установите Читать дальше …