Я изначально написал свою игру, используя glfw. Однако из-за отсутствия мобильности android я должен заменить весь мой код glfw на SDL, поскольку SDL более портативен.Можно ли проверить события с помощью SDL без использования встроенного while_loop?
Мой оригинальный игровой цикл, использующий работу рамы glfw, был очень плавным. Вот оно:
// game loop
while (!glfwWindowShouldClose(window)) {
//if-else statements that create
//the games state machine
//player input is received here
//rendering done here
}
Ok. Есть, вероятно, лучшие способы написания этого игрового цикла, но суть в том, что код работал для прототипа игры.
Однако теперь, когда я переключаюсь на SDL, я столкнулся с проблемой. Кажется, что SDL_Event должен быть помещен в цикл while, чтобы постоянно проверять события. И ЭТО while_loop находится внутри другого while_loop. Так что мой код выглядит следующим образом:
while(!Quit) {
SDL_Event event;
while(SDL_PollEvent(&event)) {
//if-else statements that create
//the games state machine
//player input is received here
//rendering done here
}
}
Однако это while_loop в while_loop полностью перепутались игры рендеринга! Я сейчас мерцаю! Есть ли другой способ выразить этот код всего за один while_loop, как это было раньше с glfw. Или есть ли способ проверить события без использования встроенного while_loop
Не следует ли 'SDL_PollEvent()' петля просто иметь дело с событиями? Ваш код рендеринга и т. Д. Должен быть вне этого, в вашем внешнем цикле ... как есть, вы только визуализируете и т. Д. При обработке события ... – Dmitri