Я создал эмулятор цвета gameboy с использованием C ++ и готов приступить к разработке внешнего интерфейса, который будет отображать область просмотра эмулятора, воспроизводить звук, а также отображать некоторую отладочную информацию.
Я собираюсь использовать Kivy для создания интерфейса пользовательского интерфейса и boost.python (который выглядит довольно многообещающе) для взаимодействия между ядром C ++ и пользовательским интерфейсом python.
Что я хотел бы иметь в моей передней части:
Позволит ли Киви мне все это делать? Я вижу, что у него есть зависимости от glew и sdl2, которые должны позаботиться о графических и аудио требованиях, верно? Существуют ли виджеты, которые позволят мне создать просмотрщик разборки и памяти?
Окно для отображения графики эмулятора, обновления необработанного растрового изображения на каждом кадре
Не уверен, как именно, но у вас есть доступ к текстурам и огромной части OpenGL через Kivy и Python, так что это может быть выполнимо.
Окно для отображения некоторой отладочной информации, большое прокручиваемое текстовое поле
Используйте RecycleView и ядро Label. Есть пример для ListView, но с момента новых изменений он как бы не работает. Однако аналогичным образом это можно сделать для RecycleView.
Способ передачи звука, генерируемого эмулятором
Должно работать без проблем, если вы можете передать его провайдеру. Единственная проблема, которую я вижу со встроенной поддержкой звука в Kivy, — это пауза и поиск, потому что эти afaik либо не реализованы (скорее всего), либо не работают. Однако с Gstreamer это должно работать.
Примите ввод с клавиатуры для управления игрой.
Клавиатура и мультитач работают из коробки с Kivy, вам нужно только (для клавиатуры) расширить один метод и (для касания) проверить наличие коллизий с виджетами
Существуют ли виджеты, которые позволят мне создать просмотрщик разборки и памяти?
Нет. По крайней мере, никто из тех, кого я знаю, сделает это из коробки. Если под разборкой вы имеете в виду текст, поместите его в виджет, который может обрабатывать текст. Однако средства просмотра памяти там нет, и вам нужно создать собственный виджет. Это не сложно, если вы по крайней мере какое-то время работаете с Киви.
Киви по умолчанию не делает 3D. Есть «плагины», которые могут позволить вам такую вещь, но я не вижу ни одной, которая все еще поддерживается, так что есть эта вещь. Также я вижу, что код не C, а C ++, поэтому я не уверен, как связать их вместе. Cython должен быть спасением здесь ^^
Других решений пока нет …