Возможно ли создать внешний интерфейс эмулятора с помощью Kivy?

Я создал эмулятор цвета gameboy с использованием C ++ и готов приступить к разработке внешнего интерфейса, который будет отображать область просмотра эмулятора, воспроизводить звук, а также отображать некоторую отладочную информацию.

Я собираюсь использовать Kivy для создания интерфейса пользовательского интерфейса и boost.python (который выглядит довольно многообещающе) для взаимодействия между ядром C ++ и пользовательским интерфейсом python.

Что я хотел бы иметь в моей передней части:

  • Окно для отображения графики эмулятора. Точнее, что-то, что позволяет мне обновлять необработанное растровое изображение (то есть необработанные данные пикселей) в каждом кадре.
  • Окно для отображения некоторой отладочной информации. Точнее, я хочу, чтобы в большом текстовом поле с прокруткой отображался разобранный код, а в другом — память.
  • Способ испускать звук, который генерируется эмулятором. Ядро пока не поддерживает аудио, поэтому я не уверен, как это будет выглядеть на стороне C ++.
  • Примите ввод с клавиатуры для управления игрой.

Позволит ли Киви мне все это делать? Я вижу, что у него есть зависимости от glew и sdl2, которые должны позаботиться о графических и аудио требованиях, верно? Существуют ли виджеты, которые позволят мне создать просмотрщик разборки и памяти?

0

Решение

Окно для отображения графики эмулятора, обновления необработанного растрового изображения на каждом кадре

Не уверен, как именно, но у вас есть доступ к текстурам и огромной части OpenGL через Kivy и Python, так что это может быть выполнимо.

Окно для отображения некоторой отладочной информации, большое прокручиваемое текстовое поле

Используйте RecycleView и ядро ​​Label. Есть пример для ListView, но с момента новых изменений он как бы не работает. Однако аналогичным образом это можно сделать для RecycleView.

Способ передачи звука, генерируемого эмулятором

Должно работать без проблем, если вы можете передать его провайдеру. Единственная проблема, которую я вижу со встроенной поддержкой звука в Kivy, — это пауза и поиск, потому что эти afaik либо не реализованы (скорее всего), либо не работают. Однако с Gstreamer это должно работать.

Примите ввод с клавиатуры для управления игрой.

Клавиатура и мультитач работают из коробки с Kivy, вам нужно только (для клавиатуры) расширить один метод и (для касания) проверить наличие коллизий с виджетами

Существуют ли виджеты, которые позволят мне создать просмотрщик разборки и памяти?

Нет. По крайней мере, никто из тех, кого я знаю, сделает это из коробки. Если под разборкой вы имеете в виду текст, поместите его в виджет, который может обрабатывать текст. Однако средства просмотра памяти там нет, и вам нужно создать собственный виджет. Это не сложно, если вы по крайней мере какое-то время работаете с Киви.

Киви по умолчанию не делает 3D. Есть «плагины», которые могут позволить вам такую ​​вещь, но я не вижу ни одной, которая все еще поддерживается, так что есть эта вещь. Также я вижу, что код не C, а C ++, поэтому я не уверен, как связать их вместе. Cython должен быть спасением здесь ^^

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]