Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров7K
Если у вас есть готовое приложение разработанное с использованием OpenGL ES, и вы задумывались о его переносе в Windows Store, то у меня для вас хорошие новости. Команда Microsoft Open Technologies с недавних пор работает над адаптацией проекта ANGLE для Windows Store и Windows Phone Store. Это значит, что код на базе OpenGL ES 2.0 который вы уже написали, может быть использован повторно, и ваше приложение для Windows Store может быть выпущено быстрее.

Что такое ANGLE.


Almost Native Graphics Layer Engine – это разработанная компанией Google обертка OpenGL ES поверх DirectX 9-11. ANGLE используется как основной бэкенд WebGL для Google Chrome и Mozilla Firefox на платформе Windows. Так же, Chrome использует ANGLE для всех операций рендера на Windows, включая аппаратное ускорение Canvas2D и поддержку графических операций Native Client.

ANGLE для Windows Store приложений


Основным API работы с графикой на платформе Windows Store Apps и Windows Phone Store Apps является DirectX. Это API является основным для платформы, стало частью операционной системы, и хорошо себя зарекомендовало в многих приложениях. Но если у вас уже есть приложение разработанное с использованием OpenGL ES то его перенос на DirectX потребует очевидных затрат. Для того чтобы облегчить эту задачу, команда Microsoft Open Technologies подготовила форк ANGLE (вполне вероятно, что он скоро станет частью основной ветки ANGLE) который позволяет сохранить большинство кода OpenGL ES на Windows RT и Windows Phone 8.0. С помощью этого порта уже успешно перенесена на Windows RT библиотека Cocos2D-X.

С чего начать и некоторые технические моменты


Исходные файлы форка находятся по адресу https://github.com/stammen/angleproject. После загрузки откройте в Visual Studio 2013 файл \samples\RotatingCube\RotatingCube_winrt_2013.sln. Это пример из которого становятся ясны все моменты организации инфраструктуры OpenGL приложения для Windows Store.
Основной точкой входа для WinRT является класс Windows::ApplicationModel::Core::IFrameworkView, точно так же как и для DirectX приложений. Метод RotatingCube::Run() это основной цикл обработки сообщений и рендера.
Класс CubeRenderer это основной класс работы с графикой, в нем реализованы методы инициализации (CreateResources()) и вывода фреймов изображения на экран (Update()).
Следует так же учитывать, что у Windows 8.0 и Windows Phone 8.0 отсутствует API компиляции шейдеров во время исполнения приложения. Необходимо заранее подготавливать блобы шейдеров. В Windows 8.1 таких ограничений нет, и вы можете использовать динамические шейдеры.
Если у вас пока нет общего представления о разработке для Windows Store то очень рекомендую начать с изучения архитектуры приложений и примера приложения для DirectX.
Теги:
Хабы:
Всего голосов 16: ↑13 и ↓3+10
Комментарии3

Публикации

Истории

Работа

Unity разработчик
15 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Innopolis 2025
Иннополис