A small OpenGL 3+ renderer and game engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

60 lines
1.1 KiB

#include <SDL2/SDL.h>
#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;
}