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

в 6:14, , рубрики: game development, opengl es, windows, Windows 8.1, windows phone, windows phone 8, метки: , ,

Если у вас есть готовое приложение разработанное с использованием 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 файл 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 то очень рекомендую начать с изучения архитектуры приложений и примера приложения для DirectX.

Автор: dmandreev

Источник

* - обязательные к заполнению поля