В далеком 1998 году я пытался сделать свою игру с OpenGL. Разработка с трудом дошла до альфы и была заброшена, но что особо запомнилось, так это как удобно было делать под GL интерфейсы — ортогональная проекция, пара трансформаций, биндинг нескольких вершин с GL_TRIANGLE_STRIP и у нас уже есть кнопка. И вот, спустя шестнадцать лет и занимаясь мобильным игростроем я столкнулся с таким же подходом в OpenGL ES 1.*, разве что 2D текстуры без вращений можно теперь рисовать через glDrawTexfOES.
Я поддерживал несколько проектов, сделанных по этому принципу и понемногу в голове выстроился коварный план: сделать кросс-платформенную 2D игру на мобильных с OpenGL ES и на C#, а на десктопах с обычным OpenGL. Цели я добился не с первого раза и было с этим много проблем, но в результате очередной проект у меня работает без изменений бизнес-логики на iOS, Android, BlackBerry, Windows XP/7, Mac OS X, Linux, ReactOS, Windows 8, Windows Phone 8.1. Материала набралось на много статей, но в этот раз я расскажу именно о поддержке Windows Runtime.
Читать полностью »
Рубрика «OpenGL» - 10
OpenGL ES 1.1 в Windows 8 и Windows Phone 8.1
2014-12-27 в 15:05, admin, рубрики: DirectX, Mono и Moonlight, OpenGL, Windows 8, библиотека, игры, кроссплатформенность, разработка под windows, разработка под windows phonePyOpenGL для начинающих и немного новогоднего настроения
2014-12-23 в 20:04, admin, рубрики: OpenGL, python, python3, Новый Год, Работа с анимацией и 3D-графикой 
Благодаря своей гибкости и простоте, язык Python позволяет легко и быстро писать целый ряд приложений и утилит. Мною данный язык, в основном, используется для написания небольших скриптов, облегчающих выполнение различных задач, связанных с системным администрированием. Как оказалось, Python можно использовать и для не совсем «традиционных» задач, например, для вывода 3D графики. Об этом и будет мой небольшой предновогодний пост.
Читать полностью »
Сказ о том, как я дизассемблировал Supaplex и почти написал клон с 3D графикой
2014-12-16 в 15:13, admin, рубрики: c++, disassemble, game development, github, open source, OpenGL, supaplex 
Я думаю, большинство людей, кто застал времена DOS и ранних Windows 9x, играли или хотя-бы слышали о такой замечательной игре, как Supaplex. Лично для меня — это игра-легенда. Я до сих пор с трепетом вспоминаю долгие зимние вечера, проведённые в попытке пройти какой-нибудь сложный уровень на стареньком 286-м.
Так сложилось, что я программист. И не просто программист, а программист компьютерных игр. Так что, где-то в 2008 году я занялся написанием движка-«убийцы крузиса» (или что там было круто на тот момент, я уже не помню). Примерно через год меня настигло прозрение, что моих человеко-часов на проект уровня Unreal Engine не хватит. И я решил сделать легкую, «казуальную», версию движка и написать на ней пару простеньких игрушек.
Мой выбор пал на клон Supaplex. Правда, на тот момент уже существовало несколько клонов под Windows и другие платформы, поэтому просто писать все с нуля было неинтересно. Зато в мою голову заползла крамольная мысль: а что, если дизассемблировать оригинальный Supaplex и сделать игру с логикой, «идентичной натуральной». Такая задача казалась крайне заманчивой, и я взялся за её осуществление. Я заказал 3D-модельки у одного хорошего знакомого фрилансера и, пока он был занят моделлингом, я приступил к изучению пациента. Сразу предупреждаю, что я уже не помню многих деталей и могу что-то забыть или приврать, всё-таки это было довольно давно.
CPU vs GPU. Distance field
2014-12-12 в 19:09, admin, рубрики: Delphi, distance fields, gpgpu, gpu, OpenGL, Алгоритмы, опять паскаль
Привет всем. Я уже однажды писал про Distance Field, и приводил реализацию «эвристическим» кодом дающую неплохую скорость: habrahabr.ru/post/186482/
Зачем он нужен?
DField можно применять:
- Для значительного повышения качества шрифтов
- Для эффектов например горения контура. Один из эффектов я приводил в своей предыдущей статье
- Для эффекта «metaballs» но в 2д и для любых сложных шейпов. (возможно я когда-нибудь приведу пример реализации этого эффекта)
- А в данный момент DField мне нужен для качественного сглаживания углов и удаления мелких деталей.
И если в первых двух случаях мы можем заранее вычислить DField, то для других эффектов нам нужно просчитывать его в реальном времени.
В статье будет рассмотрен наиболее популярный, я бы сказал классический Chamfer distance (CDA) с кучей картинок, объясняющих принцип его работы, а так же рассмотрен двухпроходный алгоритм на GPU.
Оба алгоритма реализованы в демонстрационных программах на FPC.
Читать полностью »
Разработка игры в 115 кб — хаки, баги и досада
2014-11-28 в 7:49, admin, рубрики: Delphi, demoscene, freepascal, game development, gamedevelopment, OpenGL
В начале ноября я участвовал в 115-ом по счете конкурсе сообщества Independent Games Developers Contests (IGDC), темой которого была разработка аркадного шутера с лимитом в 115 килобайт за неделю. Под катом история разработки игры на OpenGL + Free Pascal, эксперименты с LZO, обход багов компилятора FPC для uFMOD, простейшая генерация текстур и досадный баг на видеокартах NVidia, который все испортил.
Видео, бинарник для Windows и исходный код также прилагаются — ищите в конце статьи.
Читать полностью »
SSLR: Screen Space Local Reflections в AAA-играх
2014-11-27 в 13:37, admin, рубрики: DirectX, game development, HLSL, OpenGL, reflections, space screen, xna, Алгоритмы, Работа с анимацией и 3D-графикой
Привет, друг! В этот раз я опять подниму вопрос о графике в ААА-играх. Я уже разобрал методику HDRR (не путать с HDRI) тут и чуть-чуть поговорил о коррекции цвета. Сегодня я расскажу, что такое SSLR (так же известная как SSPR, SSR): Screen Space Local Reflections. Кому интересно — под кат.Читать полностью »
Шейдер для жука
2014-10-09 в 3:45, admin, рубрики: beetle, c++, glsl, iridescence, OpenGL, shaders, Алгоритмы, Анимация и 3D графика, жук, Программирование, шейдеры 
снизу фотографии настоящих жуков, сверху — моя реализация
Продолжение предыдущей статьи, на этот раз пишем шейдер.
Читать полностью »
Как я писал кросплатформенный 3d игровой движок
2014-10-08 в 18:47, admin, рубрики: c++, game development, open source, OpenGL, sdl2, Tomb Raider, разработка игр Многие из нас наверняка задумывались «а не написать ли мне игру самому». Сейчас я веду проект «Open tomb» — попытка создать переносимый движок для игры в первые 5 частей «Tomb raider», который выложен на sourceforge.com, однако, судя по своему опыту, многим будет интересна история с некоторыми деталями о том, как движок писался с нуля и с практически отсутствующими знаниями в этой области. Даже сейчас многих знаний не хватает, а иногда просто не хватает мотивации что-то сделать лучше, или правильнее, однако лучше перейти к тому, как все же проект оживал шаг за шагом.
Читать полностью »
Такой разный Blur
2014-10-07 в 1:47, admin, рубрики: DoF, glsl, OpenGL, shaders, Алгоритмы, Анимация и 3D графика, Программирование, шейдеры 
Расскажу о различных реализациях эффекта размытия на GLSL.
Читать полностью »
Рендеринг диаграмм: не так просто, как кажется
2014-07-25 в 5:30, admin, рубрики: direct3d, OpenGL, Анимация и 3D графика, визуализация данных, графики и диаграммы, ненормальное программирование, ПрограммированиеЧто сложнее: отрендерить сцену со взрывающимися вертолётами или нарисовать унылый график функции y=x2? Да, верно, вертолёты взрывать дорого и сложно — но народ справляется, используя для этого такие мощные штуки, как OpenGL или DirectX. А рисовать график, вроде, просто. А если хочется красивый интерактивный график — можно его нарисовать теми же мощными штуками? Раз плюнуть, наверное?
А вот и нет. Чтобы заставить унылые графики вменяемо выглядеть и при этом работать без тормозов, нам пришлось попотеть: едва ли не на каждом шагу подстерегали неожиданные трудности. Читать полностью »
