Browse Source

add options to renInit()

testing
cinnaboot 6 years ago
parent
commit
47b6bbdb9a
  1. 4
      examples/assimp_loading/main.cpp
  2. 6
      include/renderer.h
  3. 24
      src/renderer.cpp

4
examples/assimp_loading/main.cpp

@ -56,9 +56,7 @@ doRenderLoop(render_state* rs, frame_callback_fn callback_fn)
int
main()
{
// TODO: would be nice to be able to pass in viewport_dims, window title
// here
render_state* rs = renInit();
render_state* rs = renInit("assimp loading");
meInitAssimp();
// TODO: entInit() doesn't allocate memory because we want to do the

6
include/renderer.h

@ -41,7 +41,7 @@ struct render_group
struct render_state
{
v2i viewport_dims;
glm::vec2 viewport_dims;
bool is_debug_draw;
SDL_Handles handles;
camera cam;
@ -57,7 +57,9 @@ struct render_state
uint max_lights;
};
render_state* renInit();
render_state*
renInit(const char* title = "Tangerine",
glm::vec2 viewport_dims = glm::vec2(1280, 720));
void renShutdown(render_state* rs);

24
src/renderer.cpp

@ -20,31 +20,31 @@
#define CLEAR_COL_G 55.f / 255.f
#define CLEAR_COL_B 55.f / 255.f
#define CLEAR_COL_A 1.f
#define DEFAULT_WIDTH 1280
#define DEFAULT_HEIGHT 720
#define USE_SECOND_MONITOR 0
// forward declarations
void openglDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity,
GLsizei length, const GLchar* message, const void* userParam);
GLsizei length, const GLchar* message, const void* userParam);
bool initSDL(SDL_Handles& handles);
bool createWindow(SDL_Handles& handles, v2i& viewport_dims);
bool createWindow(const char* title,
SDL_Handles& handles,
glm::vec2& viewport_dims);
bool initContext(SDL_Handles& handles);
bool initGlOptions();
void setDefaults(render_state* rs);
void setDefaults(render_state* rs, glm::vec2 viewport_dims);
// interface
render_state*
renInit()
renInit(const char* title, glm::vec2 viewport_dims)
{
render_state* rs = UTIL_ALLOC(1, render_state);
setDefaults(rs);
setDefaults(rs, viewport_dims);
if (initSDL(rs->handles) &&
createWindow(rs->handles, rs->viewport_dims) &&
createWindow(title, rs->handles, rs->viewport_dims) &&
initContext(rs->handles) &&
initGlOptions())
{
@ -139,14 +139,14 @@ initSDL(SDL_Handles& handles)
}
bool
createWindow(SDL_Handles& handles, v2i& viewport_dims)
createWindow(const char* title, SDL_Handles& handles, glm::vec2& viewport_dims)
{
uint display_id = 0;
if (USE_SECOND_MONITOR && SDL_GetNumVideoDisplays() > 1)
display_id = 1;
handles.window = SDL_CreateWindow(
"hexgame",
title,
SDL_WINDOWPOS_CENTERED_DISPLAY(display_id),
SDL_WINDOWPOS_CENTERED_DISPLAY(display_id),
viewport_dims.x,
@ -213,9 +213,9 @@ initGlOptions()
}
void
setDefaults(render_state* rs)
setDefaults(render_state* rs, glm::vec2 viewport_dims)
{
rs->viewport_dims = v2i(DEFAULT_WIDTH, DEFAULT_HEIGHT);
rs->viewport_dims = viewport_dims;
rs->max_lights = MAX_LIGHTS;
rs->lights = UTIL_ALLOC(rs->max_lights, point_light);
rs->clear_col.R = CLEAR_COL_R;

Loading…
Cancel
Save