Что такое C ++ эквивалент JavaFx и AnimationTimer класса?

У меня есть игра тетрис, запрограммированная в JavaFX. Я хочу перевести его на C ++, чтобы выучить C ++. Что я могу использовать в C ++ для отображения графики и времени игрового цикла, как я это делал с JavaFX и классом AnimationTimer?

0

Решение

C ++ действительно не имеет встроенной совместимости для графики. Вам нужно изучить API.

Глядя на JavaFX, кажется, что это библиотека 3D-рендеринга. Так что это действительно определяется тем, насколько глубоко вы хотите зайти.

Если вы хотите изучить базовый уровень, дизайн движка и т. Д., Вы можете изучить OpenGL напрямую, который научит вас тому, как работает вся трехмерная графика и SDL2. http://wiki.libsdl.org/FrontPage для взаимодействия ОС. Время цикла игры можно легко сделать с помощью классов std :: chrono.

Если вы хотите что-то немного более высокого уровня, где такие вещи, как свет и тому подобное, уже созданы для вас, я бы подумал о работе с существующей платформой, которая даст вам практический опыт разработки игр. Большинство из них используют языки сценариев, такие как C #, Lua и т. Д. Unity C # отлично подходит для чего-то подобного. Unreal Engine 4 имеет привязки к C ++, если C ++ является основным соображением, но он немного тяжел для такой маленькой игры, но большинство игровых движков используют C ++ только для своих оптимизированных низкоуровневых сред с подключенными к ним скриптовыми движками для простоты разработки при поддержке почти оптимальная производительность.

Ogre — это еще одна опция для C ++ с открытым исходным кодом, которая содержит много документации. http://www.ogre3d.org/ Который может быть счастливым посредником между 2.

Если вы не заботитесь о трехмерной графике и просто хотите, чтобы в вашей игре были прямоугольники / изображения, то что-то вроде QT также могло бы работать хорошо, но это скорее графический интерфейс, чем игровой движок, который, если все, что вам нужно, это что-то вроде Tetris. хорошо.

3

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

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

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