#include #include "dumbLog.h" #include "renderer.h" #include "mesh.h" typedef void (*frame_callback_fn) (render_state*); void doFrameCallback(render_state* rs) { } void doRenderLoop(render_state* rs, frame_callback_fn callback_fn) { const uint TARGET_FPS = 60; const uint FRAME_DELAY = 1000 / TARGET_FPS; uint frameStart, frameTime; bool running = true; SDL_Event e; while (running) { frameStart = SDL_GetTicks(); while (SDL_PollEvent(&e)) { if ((e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE) || e.type == SDL_QUIT) { running = false; } } callback_fn(rs); renRenderFrame(rs, nullptr, 0); SDL_GL_SwapWindow(rs->handles.window); frameTime = SDL_GetTicks() - frameStart; if (FRAME_DELAY > frameTime) SDL_Delay(FRAME_DELAY - frameTime); } } int main() { render_state* rs = renInit(); meInitAssimp(); meMeshGroup mg; if (meLoadFromFile(mg, "../data", "../data/spaceship.glb")) { doRenderLoop(rs, doFrameCallback); } else { LOG(Error) << "Error loading mesh, exiting\n"; } meShutdownAssimp(); return 0; }