- PVSM.RU - https://www.pvsm.ru -

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

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

Что такое ANGLE.

Almost Native Graphics Layer Engine [1] – это разработанная компанией 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 [2] (вполне вероятно, что он скоро станет частью основной ветки ANGLE) который позволяет сохранить большинство кода OpenGL ES на Windows RT и Windows Phone 8.0. С помощью этого порта уже успешно перенесена на Windows RT библиотека Cocos2D-X [3].

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

Исходные файлы форка находятся по адресу https://github.com/stammen/angleproject [2]. После загрузки откройте в Visual Studio 2013 файл samplesRotatingCubeRotatingCube_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 то очень рекомендую начать с изучения архитектуры приложений [4] и примера приложения для DirectX [5].

Автор: dmandreev

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/windows-phone/47521

Ссылки в тексте:

[1] ANGLE: http://code.google.com/p/angleproject/

[2] форк ANGLE: https://github.com/stammen/angleproject

[3] Cocos2D-X: http://www.cocos2d-x.org/

[4] архитектуры приложений: http://msdn.microsoft.com/library/windows/apps/br211361

[5] примера приложения для DirectX: http://msdn.microsoft.com/en-us/library/windows/apps/br229580.aspx

[6] Источник: http://habrahabr.ru/post/200828/