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

    Если у вас есть готовое приложение разработанное с использованием 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.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 3

      +4
      Таки радость, все-таки openGL ES это стандарт дефакто в мире мобильного 3д.
        0
        Пропустил, только в дайжесте заметил. Я сам как раз только закончил WP8 на ANGLE. Вы на описали, что у WP свой формат сжатых текстур и PVR и ETC1 не подходят, но так как минимальные требования к WP8 выше чем к андроиду, то решил не сжимать. Жатые текстуры выходили очень коряво. Было интересно прочитать про сжатие текстур на виндоусфонах. Какие поддерживаются на всех, какое качество и прозрачность.

      Only users with full accounts can post comments. Log in, please.