Мне нужно разработать кросс-платформенное мультимедийное приложение, которое будет работать на Windows, Linux, MacOSX, Android и IOS. Это приложение должно будет иметь возможность воспроизводить аудио/видео контент, отображать фотографии и графики и, возможно, показывать простые 2D-анимации. После многих поисков кажется, что "самый переносимый подход" к проблеме заключается в использовании C++
в качестве языка и OpenGL ES
в качестве API-интерфейсов чертежей, поскольку оба поддерживаемый практически любой парой устройств/ОС, уровень производительности будет хорошим, а внешний вид должен быть примерно одинаковым на каждой (группе) устройствах.
Очевидно, я знаю, что мне придется настроить внешний вид приложения на "масштаб" на разных устройствах с различными размерами и разрешениями дисплея. Я также знаю, что нереалистично требовать точного поведения для любой части кода на таких разных архитектурах. Я просто хочу свести к минимуму написанный код (например, переписать часть интерфейса сначала на С++, а затем в Java следует избегать).
Я не эксперт в программировании OpenGL ES, но, глядя на некоторые образцы, кажется, что мне понадобится инфраструктура, чтобы иметь готовый виджет (меню, кнопки, текстовые поля). Я бы предпочел не изобретать велосипед.
Это низкобюджетный проект, поэтому мне понадобится фреймворк , полностью свободный и openource. Последнее требование также дает свободу добавлять/изменять API-интерфейсы структуры, когда что-то важное отсутствует или является неправильным. Я не прошу создать многоцелевую инфраструктуру (например, Qt), способную обрабатывать входные данные, сети, хранилища и т.д., Только потому, что я сильно подозреваю, что такой платформы не существует для упомянутых выше платформ. Я просто хочу своего рода оболочку OpenGL, способную абстрагироваться от многих деталей своего низкого уровня, но также предлагая некоторый виджет пользовательского интерфейса, как это делает Qt. Я буду обрабатывать внутренние, сетевые, хранилища, датчики отдельно, возможно, используя другие кросс-платформенные библиотеки с открытым исходным кодом, как предложено здесь.
Я прочитал много подобных вопросов в Stackoverflow и Gamedev, и я слышал о многих фреймах (Unity, Corona SDK, LÖVE, LibGDX, Ogre, Cocos2D-x), в основном созданный для разработки игр. Ogre и Cocos2D-x, например, соответствуют некоторым моим требованиям, но если я решит использовать один из них, мне придется закодировать почти все элементы моего пользовательского интерфейса (не такая большая нагрузка, кто-то может возразить).
Несколько замечаний:
- приложение является 2D, поэтому OpenGL может показаться излишним. Тем не менее, OpenGL ES был выбран из-за его очень хорошей переносимости и высокого уровня производительности даже на старом оборудовании.
- Я в основном разработчик Linux С++, поэтому я бы предпочел не переключиться на HTML5 (еще слишком молодой) или .NET/Mono (менее эффективный) без замечательных преимуществ взамен. Более того, я не мог реалистично освоить эти языки за короткий период.
- Меня впечатлила история в в этой статье. Я считаю, что это может быть правильный подход: сочетание инструментов и библиотек с открытым исходным кодом, которые соответствуют потребностям проекта. Но у меня все еще отсутствует самая важная часть: графическая структура.
- Написав этот вопрос, я нашел этот отвратительный ответ. Надеюсь, мои требования не создают пустой набор. Я действительно не могу поддерживать n разных пользовательских интерфейсов на другой платформе. Мне действительно нужно что-то, что является агностиком платформы.
Приветствуется любая помощь или совет.