diff options
| author | realtradam <[email protected]> | 2023-06-02 21:29:13 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-06-02 21:29:13 -0400 |
| commit | 9eaee25e671d47dcb7a2cbb333e6d3283401087f (patch) | |
| tree | a35e8b71dc1a79797e554d89a88742de079d81c8 /src/rodeo.c | |
| parent | 40a78e6865794db16988bf92a99f69c88c152c8a (diff) | |
| download | RodeoKit-9eaee25e671d47dcb7a2cbb333e6d3283401087f.tar.gz RodeoKit-9eaee25e671d47dcb7a2cbb333e6d3283401087f.zip | |
resizeable desktop window
Diffstat (limited to 'src/rodeo.c')
| -rw-r--r-- | src/rodeo.c | 101 |
1 files changed, 73 insertions, 28 deletions
diff --git a/src/rodeo.c b/src/rodeo.c index afeefba..6978a52 100644 --- a/src/rodeo.c +++ b/src/rodeo.c @@ -79,7 +79,7 @@ rodeo_window_init( SDL_WINDOWPOS_UNDEFINED, screen_width, screen_height, - SDL_WINDOW_SHOWN + SDL_WINDOW_SHOWN //| SDL_WINDOW_RESIZABLE ); if(state.window == NULL) { @@ -136,8 +136,9 @@ rodeo_window_init( bgfx_init_t init = {0}; bgfx_init_ctor(&init); - init.type = BGFX_RENDERER_TYPE_COUNT; // auto determine renderer - //init.type = BGFX_RENDERER_TYPE_OPENGL; // force opengl renderer + //init.type = BGFX_RENDERER_TYPE_COUNT; // auto determine renderer + init.type = BGFX_RENDERER_TYPE_OPENGL; // force opengl renderer + //SDL_GetWindowSize(state.window, &state.screen_width, &state.screen_height); init.resolution.width = state.screen_width; init.resolution.height = state.screen_height; init.resolution.reset = BGFX_RESET_VSYNC; @@ -147,6 +148,8 @@ rodeo_window_init( bgfx_set_debug(BGFX_DEBUG_TEXT); //bgfx_set_state(BGFX_STATE_CULL_CCW, 0); + + //bgfx_dbg_text_clear(0x65, false); bgfx_set_view_clear( 0, @@ -188,6 +191,12 @@ rodeo_window_init( "shaders/spirv/" ); break; + case BGFX_RENDERER_TYPE_OPENGL: + cstr_assign( + &shader_path, + "shaders/opengl/" + ); + break; default: rodeo_log( rodeo_logLevel_error, @@ -257,6 +266,40 @@ rodeo_window_init( state.active_texture_p = &state.default_texture.internal_texture->texture_bgfx; } + SDL_SetWindowResizable(state.window, true); + + /* + rodeo_log( + rodeo_logLevel_info, + "%"PRIu32", %b\n", + bgfx_get_caps()->limits.transientVbSize, + bgfx_get_caps()->homogeneousDepth + );*/ + + //vec3 eye = {0.0f, 0.0f, -35.0f}; + //vec3 center = {0.0f, 0.0f, 0.0f}; + //vec3 up = {0, 1, 0}; + + //glm_lookat(eye, center, up, view); + + glm_mat4_identity(state.view_matrix); + + //glm_perspective(glm_rad(60.f), 640.f / 480.f, 0.1f, 100.0f, proj); + + // TODO: figure out if why 'zo' is correct + // but 'no' is incorrect + glm_ortho_rh_zo( + 0, + (float)state.screen_width, + (float)state.screen_height, + 0, + // near + -0.1f, + // far + 100.0f, + state.proj_matrix + ); + rodeo_random_seed_set(SDL_GetTicks64()); state.end_frame = SDL_GetPerformanceCounter(); @@ -277,6 +320,12 @@ rodeo_window_deinit(void) SDL_Quit(); } +SDL_Window * +irodeo_window_get(void) +{ + return state.window; +} + uint16_t rodeo_screen_width_get(void) { @@ -290,39 +339,28 @@ rodeo_screen_height_get(void) } void -rodeo_frame_begin(void) +irodeo_screen_width_set(uint16_t width) { - //vec3 eye = {0.0f, 0.0f, -35.0f}; - //vec3 center = {0.0f, 0.0f, 0.0f}; - //vec3 up = {0, 1, 0}; - mat4 view; - //glm_lookat(eye, center, up, view); - glm_mat4_identity(view); + state.screen_width = width; +} - mat4 proj; - //glm_perspective(glm_rad(60.f), 640.f / 480.f, 0.1f, 100.0f, proj); +void +irodeo_screen_height_set(uint16_t height) +{ + state.screen_height = height; +} - // TODO: figure out if why 'zo' is correct - // but 'no' is incorrect - glm_ortho_rh_zo( - 0, - (float)state.screen_width, - (float)state.screen_height, - 0, - // near - -0.1f, - // far - 100.0f, - proj - ); - bgfx_set_view_transform(0, view, proj); +void +rodeo_frame_begin(void) +{ + state.quit = rodeo_input_events_poll(); + + bgfx_set_view_transform(0, state.view_matrix, state.proj_matrix); bgfx_set_view_rect(0, 0, 0, state.screen_width, state.screen_height); bgfx_touch(0); irodeo_render_buffer_transient_alloc(); - state.quit = rodeo_input_events_poll(); - state.start_frame = state.end_frame; } @@ -351,6 +389,13 @@ rodeo_frame_end(void) float temp_frame_time = ((float)(state.end_frame - state.start_frame) * 1000.0f / (float)SDL_GetPerformanceFrequency()); state.frame_time = (temp_frame_time < ((1.0f/minimum_fps) * 1000)) ? temp_frame_time : ((1.0f / minimum_fps) * 1000); */ + /* + rodeo_log( + rodeo_logLevel_info, + "Vertex Buffer Used: %f", + (float)bgfx_get_stats()->transientVbUsed / (float)bgfx_get_caps()->limits.transientVbSize + ); + */ } void |
