Pull to refresh
  • by relevance
  • by date
  • by rating

Основы работы с OpenGL ES 2.0 на iPhone 3G S

Development for iOS
Одно из самых приятных нововведений в iPhone 3GS — более быстрая и мощная графическая платформа с поддержкой OpenGL ES 2.0. К сожалению, информации от Apple о том, как именно задействовать открывшиеся возможности, крайне мало. Практически для всех API у них есть отличная документация с образцами кодов, но проблема в том, что в случае с OpenGL примеры всегда оставляли, мягко говоря, желать лучшего.

Более того, начинающим работу с OpenGL ES 2.0 не предлагается ни базовых примеров, ни шаблона XCode. Чтобы воспользоваться расширенными графическими возможностями, придется осваивать их самостоятельно. Не стоит ошибочно полагать, что OpenGL ES 2.0 — незначительно доработанная версия OpenGL ES 1.1 с парочкой новых функций. Отличия между ними кардинальные! Конвейер с фиксированными функциями исчез, и теперь для отображения на экране обычного треугольника понадобится более глубокое знакомство с основами компьютерной графики, включая шейдеры.
Читать дальше →
Total votes 61: ↑53 and ↓8+45
Views17K
Comments 28

OpenGL ES: рисование базовых фигур (треугольники)

Development for iOS
Translation
Базовые фигуры (примитивы) — основные элементы, из которых при рисовании выстраиваются сложные объекты. В OpenGL ES такими примитивами выступают объекты Point (Точка), Line (Линия), Triangle (Треугольник). Думаю, их названия говорят сами за себя.

В этом уроке мы будем анализировать код, на основании которого впоследствии можно будет создавать собственные проекты.

Примитив №1 — треугольники


Треугольники — самые сложные из базовых фигур, но они настолько удобны и полезны, что с них мы и начнем. Чтобы нарисовать треугольник, необходимо указать OpenGL три координаты трехмерного пространства — остальное программа сделает сама.

Первым делом создайте копию проекта из урока "OpenGL ES: настройка проекта в Xcode" или загрузите исходный код отсюда. Открыв проект в Xcode, перейдите к файлу "EAGLView.m" и найдите метод "drawView". Начинается настоящее волшебство!
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Views25K
Comments 6

OpenGL ES: Перемещение в 3D

Development for iOS
Translation
В Сидней практически пришла зима — и я умудрился подхватить грипп (простой, не свиной). А тут еще работа, день Матери и пр. и пр. Одним словом, ввиду недостатка времени двигаться будем быстро. Но прежде чем приступать к созданию «уникального» трехмерного мира, освоим концепции перемещения в 3D пространстве.

Нам предстоит освоить код обработки событий, который позволит ходить «по полу». С помощью касаний мы будем поворачивать влево, вправо, перемещаться вперед и назад. Обойдемся без бега, поворотов головы и наведения резкости, хотя добавить их легко. Подобные ограничения объясняются как желанием упростить изложение, так и возможностью для не располагающих iPod Touch или iPhone добиваться аналогичных результатов в симуляторе.

Для начала загрузим основу проекта здесь.

Кода там не много — в основном объяснения, что и как происходит.

Мифическая камера


Большинство воспринимает 3D миры как пространство, на которое смотришь через камеру, но в OpenGL камеры как таковой нет. Для иллюзии движения по сцене относительно начальной точки (0, 0, 0) перемещаются объекты, а не камера, как в кино.

Процесс может показаться трудоемким, но это не так. В зависимости от приложения есть множество способов решения данной задачи и еще больше — оптимизации для действительно больших миров. На этом я вкратце остановлюсь чуть позже.

Чтобы немного упростить работу, к уроку я приложил удобную игрушку от «большого брата» OpenGL ES — библиотеки GLU: я имею в виду функцию "gluLookAt()".
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Views29K
Comments 21

Режьте, братцы, режьте. Режьте осторожно…

Self Promo
Прошла весна и пол-зимы с тех пор, когда я ступил на лично выстраданный путь покорения appStore.

Все что есть в печи — все в аппстор мечи, — не самый лучший лозунг, но имеет право на существование.

Теперь я строчу, как Жюль Верн, еженедельно заваливая iOs Review Team свежеиспеченным кодом.
iOs Review Team морщится, но ест. Им приходится пробовать все блюда от клиентов, уплативших 100 долларов за вход в это чудесное яблочное заведение.

image

Злоключения и заключения экстенсивного пути покорения appStore выкладываю под habracut
PS. Можно ли перенести данный топик в раздел Game Development для всеобщего чтения?
Читать дальше →
Total votes 158: ↑139 and ↓19+120
Views1.7K
Comments 58

Применение шейдеров OpenGL в QML

Qt
Этот пост участвует в конкурсе „Умные телефоны за умные посты“

Данный пост посвящен применению шейдеров OpenGL вместе с элементами декларативного языка QML. Тема, на мой взгляд, является актуальной, так как в будущей версии QML 2.0 планируется широко использовать OpenGL, как backend для отрисовки графических элементов интерфейса. Написание шейдеров — тема непростая и целью данного поста является то, чтобы в первую очередь человек, прочитав её, мог сразу же что-то попробовать сделать интересное для себя и поэкспериментировать, получив, например, вот такие примеры:



В конце я приведу полезные ссылки, где Вы сможете посмотреть материал для дальнейшего, более глубокого изучения данной темы, если она конечно Вас заинтересует, и реализовать еще более интересные шейдеры, применив их вместе с элементами языка QML. Работу с шейдерами можно рассмотреть на примере различных элементов QML: ShaderEffectItem, множества классов Qt3D, так же использующих OpenGL и т.д. В данном посте я продемонстрирую несколько примеров, используя элемент ShaderEffectItem вместе с ShaderEffectSource.
Читать дальше →
Total votes 90: ↑79 and ↓11+68
Views27K
Comments 14

GLU ES — порт GLU 1.3 под OpenGL ES

Development for iOS

Я достаточно долго искал библиотеку способную триангулировать самопересекающиеся многоугольники или разбивать их на простые многоугольники. В конце концов я остановился на libtess в составе GLU ES — в моем случае удобнее подключить с помощью mercurial subrepos цельную thirdparty-библиотеку, чем грубо выдрать и скопировать кусок исходников.

GLU ES является полным (в отличии от iGLU) портом GLU 1.3 под OpenGL ES. Портирование осуществлено Горчак Михаилом, за что ему огромное спасибо!

Библиотека доступна под лицензией SGI FREE SOFTWARE LICENSE B.

Читать дальше →
Total votes 11: ↑8 and ↓3+5
Views2.1K
Comments 2

Покадровые анимации и шейдеры в iOS

Development for iOS
При разработке 2D игр часто сталкиваешься с покадровыми анимациями, и чем выше их качество, тем больше памяти они потребляют. С такой проблемой мы столкнулись при рендере анимации волос персонажа — художники рисуют пол сотни кадров замечательной графики с кучей мелких деталей и это очень быстро занимает всю доступную память. Собрали, замеряли, получилось 4 текструы по 16 мегабайт каждая. Детализация графики того стоит, но многовато как-то для одной анимации :)

Нужно это все упаковать… Поразмыслили и на помощь пришла старая идея с частичным обновлением картинки — вряд-ли при анимации будет изменянятся вся область. Значит нужно разбить картинку на девять частей, восемь взять из базовой и центральную подменить необходимой модификацией. Примерно так:



Как это реализовать смотрите под катом
Total votes 34: ↑30 and ↓4+26
Views16K
Comments 14

Маленький отважный арканоид (часть 1 — IwGl)

Development for iOSDevelopment for Android
Tutorial
Как я уже говорил, описанному мной ранее framework-у не хватает очень многого, для того чтобы считаться полноценным игровым движком. В нем нет моделирования физики, он использует негибкий и не быстрый Iw2D для вывода графики. Фактически, все что он умеет делать — это выполнение 2D анимации спрайтов, сопровождаемое звуковыми эффектами. Чтобы как-то расти над собой, очевидно, необходимо осваивать новые возможности, но делать это, не имея какой-то цели, скучно и неинтересно.

Мы поставим перед собой цель, и разработаем небольшой прототип всем известной игры Arcanoid. Для начала, попробуем внять совету уважаемого crmMaster и попытаться разобраться с тем, что-же такое IwGl и как его можно использовать. Правда натягивать текстуры на куб мы сегодня не будем. Начинать надо с простого, и сегодня мы поучимся рисовать треугольники.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Views13K
Comments 0

Маленький мультиплатформенный 2d движок tengine (android/ios/win32/nix/kolibrios/web(emscripten))

Game development
Sandbox
Приветствую всех, кому стало интересно узнать о моем небольшом проекте, которым занимаюсь в свободное от работы время, о своем долгоиграющем проекте под названием «tengine».

Какова же цель этого поста? Ответ простой — я ищу однодумцев. Я верю в то, что есть еще много людей, которым нравится славный и добрый олдскул. В этом и вся миссия — писать удовольствия ради что-то маленькое, но вполне функциональное, платформу для «приставочных» игрушек в стиле 8/16 бит.

tengine DEMO game (web version) управление: клавиши со стрелкам, ctrl. Полноценная концовка.

Главная особенность, отличающая tengine от сотен подобных поделок — не совсем стандартная идеология:
  • архитектура проекта делает упор на минимизацию использования динамической памяти. Если память и выделяется, она выделяется исключительно на инициализации подсистем
  • использовать динамическую память нужно так, как будто не существует операционной системы, постоянно помнить о фрагментации. Удаление памяти происходит в строго обратном порядке создания (за этим следит простой механизм контроля удаляемых указателей)
  • использование сторонних библиотек сведено к минимуму и должно быть аргументировано, зачастую это потенциальный источник фрагментации памяти
  • игровая сцена представляет собою готовую для использования память, сгенерированная редактором уровней
  • работа с объектами сцены игры ведется исключительно через идентификаторы, динамически создать объект невозможно
  • использование fixed point вместо float
  • мультиплатформенность
  • официальный язык проекта — си

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Views17K
Comments 26

OpenGL ES 3.0 в Android 4.3 — сжатие текстур ETC2

Development for Android
Tutorial
Совсем недавно вышла новая версия Android — 4.3. Уже задолго до его релиза были утечки сперва для Galaxy S4, а потом и Nexus 4. В этих прошивках я сразу же обнаружил библиотеки для работы с OpenGL ES 3.0, что несказанно обрадовало — слухи о том, что демонстрированные еще в марте демки OpenGL ES 3.0 на HTC One работают на родных библиотеках Android, подтвердились (равно и как слухи о поддержке Bluetooth Low Energy).

И вот в пятницу вечером пришли OTA обновления одновременно на два наших устройства — Nexus 4 и Nexus 10. На Nexus 7 обновление пока 4.3 не пришло, но это нас нисклько не огорчает (почему — объясню позже). Разумеется, руки зачесались это добро опробовать.


Читать дальше →
Total votes 62: ↑58 and ↓4+54
Views70K
Comments 17

Перенос OpenGL ES приложений в Windows Store

Game development
Если у вас есть готовое приложение разработанное с использованием OpenGL ES, и вы задумывались о его переносе в Windows Store, то у меня для вас хорошие новости. Команда Microsoft Open Technologies с недавних пор работает над адаптацией проекта ANGLE для Windows Store и Windows Phone Store. Это значит, что код на базе OpenGL ES 2.0 который вы уже написали, может быть использован повторно, и ваше приложение для Windows Store может быть выпущено быстрее.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Views6.1K
Comments 3

Как из пустой пластиковой бутылки, картинки и шейдера сделать игру для iOS за выходные

Development for iOSSwift
Sandbox
Как-то раз я спросил у своей жены:
— У нас же нет планов на выходные?
— Вроде нет, — ответила она.
— Тогда я еще разок поковыряю этот Swift.
— Поковыряй.

И вот я поставил перед собой задачу, написать очень простую игрушку для iOS на Swift'е, не прибегая к какому-либо ^.*C.*$ (прошлый мой опыт ознакомления со Swift'ом закончился тем, что 80% проекта были написаны на Objective-C (который из-за моего С++'ного мышления, сократился до ближайшего известного мне (Objective-C)+2C-Objective = C)).


Задача


Дано: Одна картинка, какие-то соображения в голове.
Надо: Игра написанная до звонка будильника в понедельник.

Не буду подробно описывать вещи, которые прошли для меня безболезненно, надеюсь, что и у вас они не должны вызвать недопонимания.
Решение
Total votes 35: ↑30 and ↓5+25
Views31K
Comments 11

Рендеринг в MAPS.ME

Mail.ru Group corporate blogAlgorithmsOpenStreetMap


Всем привет! Сегодня я бы хотел рассказать о рендеринге, который не имеет отношения к компьютерным играм, анимационным фильмам или промышленным системам проектирования. Речь пойдет о движке для рендеринга карт в реальном времени для проекта MAPS.ME. В данном посте я опишу общие принципы работы движка и некоторые грабли, на которые мы наступили (и те, которые успешно обошли). Если вы занимаетесь рендерингом больших объемов данных, в особенности картографического характера, наш опыт, надеюсь, будет полезен в ваших проектах или, по крайней мере, любопытен. Всех заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 49: ↑46 and ↓3+43
Views16K
Comments 21

Как я написал игру за 3 года

ProgrammingGame developmentDevelopment for Android
Sandbox
На днях я закончил создание своей небольшой игры и хочу описать вам путь, по которому я прошел. Хочу сразу оговориться, что моей главной целью было получение знаний и опыта в создании 3D игр для Android, и этого я успешно добился. По этой же причине я не использовал готовые движки.

image

Я начинал с создания карт для Counter-Strike: сделал карту с автобусной остановкой из своего города, пытался сделать школу. Круто же постреляться в родной школе? Это дало мне базовое понимание из чего состоит виртуальный мир.

Несколько позже я начал проходить туториалы по OpenGL на Android. Радовался как ребенок, когда впервые на экране телефона появился заветный треугольник!

image
*Картинка взята отсюда

Затем получился кубик с наложенной текстурой камня и появились мысли о создании своей простейшей игры. Перенос игры Portal на Android казался вполне достижимой задачей для новичка. Я сильно недооценивал предстоящий объем работ. Хорошо, что на то время уже существовал Portal в Google Play, и я успел создать только одну комнату.

Тогда я решил сделать что-то попроще и, увидев в Футураме бильярд без гравитации, решил его по-быстрому воплотить (пока другие не успели). Оказалось, что я по-прежнему недооценивал объем работ. И, кстати, бильярд без гравитации таки успели сделать раньше меня.
Читать дальше →
Total votes 93: ↑82 and ↓11+71
Views55K
Comments 64

Изучаем OpenGL ES2 для Android

JavaDesktop environmentsDevelopment for Android
Урок №1
Данная статья написана для новичков, которые (как и я) хотят научиться писать программы для Андроид с использованием OpenGL. Основные мысли и код взяты из замечательной книги Кевина Бразалера «OpenGL ES 2 for Android. A Quick-Start Guide by Kevin Brothaler» (1).
Зачем же пересказывать, спросите вы? Дело в том, что перед этой книгой я прочитал еще десяток статей на эту тему и код Кевина у меня сразу не пошёл (в книге среда разработки Eclipse, а у меня Android Studio). Поэтому, решил написать эту статью так, чтобы было понятно, прежде всего, самому себе.
Для начала давайте выясним, что такое OpenGL. Если почитать Википедию (2), то увидим следующее:
«OpenGL (Open Graphics Library) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.
Включает более 300 функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.»
Мы будем изучать укороченную версию OpenGL ES 2 (в дальнейшем OpenGL). Укоротили её по понятным причинам, у Андроид малая операционная память по сравнению с настольными ПК, наличие виртуальной машины Java также накладывает определенные ограничения. Наверно есть еще много причин, почему это сделали, но нас это не должно волновать. Просто нужно знать, что есть прекрасный инструмент OpenGL и надо научиться им пользоваться!
Читать дальше →
Total votes 9: ↑6 and ↓3+3
Views41K
Comments 7

Изучаем OpenGL ES2 для Android Урок №3. Освещение

ProgrammingJavaDevelopment for AndroidImage processing
Tutorial
Перед тем как начать
Если вы новичок в OpenGL ES, рекомендую сначала изучить уроки №1 и №2, так как данный урок опирается на знания предыдущих уроков.
Основы кода, используемого в этой статье, взяты отсюда:
1. http://andmonahov.blogspot.com/2012/10/opengl-es-20.html
2. http://www.learnopengles.com/android-lesson-two-ambient-and-diffuse-lighting/
В результате мы получим такую картинку на экране устройства или эмулятора.

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Views15K
Comments 2

Вышла среда разработки Android Studio 2.0 (preview)

Programming


На саммите для разработчиков Android вчера компания Google представила Android Studio 2.0 — первое крупное обновление фирменной среды разработки на платформе IntelliJ.

Авторы приложений под Android наверняка будут довольны: в Android Studio 2.0 реализованы важнейшие вещи:


Особенно радует мгновенный запуск приложений, который очень сильно ускоряет процесс разработки. Вы видите сразу редактор кода и окно смартфона, только добавите одну строчку — приложение тут же запускается в обновлённом виде рядом в эмуляторе, без компиляции и прочего (см. демо под катом). Это по-настоящему революционная функция!
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Views12K
Comments 4

Мягкие частицы в WebGL и OpenGL ES

JavaScript
Translation
Системы частиц это одни из самых простых способов сделать 3D сцену визуально богаче. В одном из наших Android приложений 3D Buddha Live Wallpaper достаточно простая сцена, которой было бы неплохо добавить чуть больше деталей. И когда мы думали как добавить разнообразия изображению то самым очевидным решением заполнить пустое пространство вокруг статуи Будды стало добавление клубов дыма или тумана. Благодаря использованию мягких частиц мы достигли довольно хорошего результата. В этой статье мы детально опишем реализацию мягких частиц на чистом WebGL / OpenGL ES без использования сторонних библиотек и готовых 3D-движков.

Разница между старым и обновленным приложением даже превзошла наши ожидания. Простенькие частицы дыма существенно улучшили сцену, сделали ее богаче и полнее. Клубы дыма это и дополнительные детали за которые “цепляется глаз”, а также способ сделать переход между основными объектами и фоном более плавным:


Читать дальше →
Total votes 6: ↑6 and ↓0+6
Views2.4K
Comments 0

Оптимизация рендера под Mobile

Playrix corporate blogDevelopment for iOSDevelopment of mobile applicationsGame developmentDevelopment for Android
Здравствуйте, дорогие читатели, любители и профессионалы программирования графики! Предлагаем вашему вниманию цикл статей, посвященных оптимизации рендера под мобильные устройства: телефоны и планшеты на базе iOS и Android. Цикл будет состоять из трех частей. В первой части мы рассмотрим особенности популярной на Mobile тайловой архитектуры GPU. Во второй пройдемся по основным семействам GPU, представленным в современных девайсах, и рассмотрим их слабые и сильные стороны. В третьей части мы познакомимся с особенностями оптимизации шейдеров.

Итак, приступим к первой части.

Развитие видеокарт на десктоп и консолях происходило в условиях отсутствия существенных ограничений потребляемой мощности. С появлением видеокарт для мобильных устройств перед инженерами встала задача обеспечения приемлемой производительности на сопоставимых с десктопными разрешениях, при этом потребление электроэнергии такими видеокартами должно было быть на 2 порядка ниже. 


Читать дальше →
Total votes 33: ↑33 and ↓0+33
Views7.3K
Comments 2

Оптимизация рендера под Mobile, часть 2. Основные семейства современных мобильных GPU

Playrix corporate blogDevelopment for iOSDevelopment of mobile applicationsGame developmentDevelopment for Android
Приветствую, дорогие любители и профессионалы, программисты графики! Приступаем ко второй части нашего цикла статей про оптимизацию рендера под Mobile. В этой части мы будем рассматривать основные семейства GPU, представленные у игроков на Mobile.


Для начала рассмотрим ряд критериев, по которым можно классифицировать мобильные GPU.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Views5.5K
Comments 8