X-Git-Url: https://harrygodden.com/git/?p=fishladder.git;a=blobdiff_plain;f=vg%2Fvg.h;fp=vg%2Fvg.h;h=0000000000000000000000000000000000000000;hp=575bf036eeabf667aa322983555a3a2dee818830;hb=30490c4c08d5c0f811017a901aa9e25a95be7c40;hpb=3363633178b1eea582304742ad1202487af0feb1 diff --git a/vg/vg.h b/vg/vg.h deleted file mode 100644 index 575bf03..0000000 --- a/vg/vg.h +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "gl/glad/glad.h" -#include "gl/glfw3.h" - -#define STB_DS_IMPLEMENTATION -#include "stb/stb_ds.h" -//#define STB_IMAGE_IMPLEMENTATION -//#include "stb/stb_image.h" - -#define QOI_IMPLEMENTATION -#include "phoboslab/qoi.h" - -#include "vg/vg_platform.h" - -void vg_register_exit( void( *funcptr )(void), const char *name ); -void vg_exiterr( const char *strErr ); - -m3x3f vg_pv; - -#include "vg/vg_m.h" -#include "vg/vg_io.h" -#include "vg/vg_gldiag.h" - -#ifndef VG_TOOLS - -// Engine globals -GLFWwindow* vg_window; - -// 1366, 768 -// 1920, 1080 - -#ifdef VG_CAPTURE_MODE -int vg_window_x = 1920; -int vg_window_y = 1080; -#else -int vg_window_x = 1366; -int vg_window_y = 768; -#endif - -v2f vg_mouse; -v2f vg_mouse_wheel; -v3f vg_mouse_ws; - -float vg_time; -float vg_time_last; -float vg_time_delta; - -// Engine components -#include "vg/vg_audio.h" -#include "vg/vg_shader.h" -#include "vg/vg_lines.h" -#include "vg/vg_tex.h" -#include "vg/vg_input.h" -#include "vg/vg_ui.h" -#include "vg/vg_console.h" -#include "vg/vg_debug.h" - -#ifdef VG_STEAM -#include "vg/vg_steamworks.h" -#endif - -// Engine main -// =========================================================================================================== - -#ifndef VG_RELEASE -void vg_checkgl( const char *src_info ) -{ - GLenum err; - while( (err = glGetError()) != GL_NO_ERROR ) - { - vg_error( "(%s) OpenGL Error: #%d\n", src_info, err ); - } -} - - #define VG_STRINGIT( X ) #X - #define VG_CHECK_GL() vg_checkgl( __FILE__ ":L" VG_STRINGIT(__LINE__) ) -#else - #define VG_CHECK_GL() -#endif - - -#define VG_GAMELOOP - -void( *vg_on_exit[16] )(void); -u32 vg_exit_count = 0; - -// Add a shutdown step -void vg_register_exit( void( *funcptr )(void), const char *name ) -{ - vg_info( "exit registered: (%u)'%s'\n", vg_exit_count, name ); - vg_on_exit[ vg_exit_count ++ ] = funcptr; -} - -void vg_exit(void) -{ - for( int i = vg_exit_count-1; i >= 0; i -- ) - { - vg_info( "engine_exit[%d]()\n", i ); - vg_on_exit[i](); - } - - vg_info( "done\n" ); -} - -// Forcefully exit program after error -void vg_exiterr( const char *strErr ) -{ - vg_error( "Engine Fatal: %s\n", strErr ); - vg_exit(); - exit(0); -} - -// Callbacks -// --------- - -void vg_mouse_callback( GLFWwindow* ptrW, double xpos, double ypos ) -{ - vg_mouse[0] = xpos; - vg_mouse[1] = ypos; -} - -void vg_scroll_callback( GLFWwindow* ptrW, double xoffset, double yoffset ) -{ - vg_mouse_wheel[0] += xoffset; - vg_mouse_wheel[1] += yoffset; -} - -void vg_framebuffer_resize_callback( GLFWwindow *ptrW, int w, int h ) -{ - vg_window_x = w; - vg_window_y = h; -} - -static void vg_register(void) VG_GAMELOOP; -static void vg_start(void) VG_GAMELOOP; -static void vg_update(void) VG_GAMELOOP; -static void vg_render(void) VG_GAMELOOP; -static void vg_ui(void) VG_GAMELOOP; -static void vg_free(void) VG_GAMELOOP; - -static void vg_init( int argc, char *argv[], const char *window_name ) -{ -#ifdef VG_STEAM - // Initialize steamworks - if( !sw_init() ) - return; -#endif - - // Context creation - // ========================================================================================================================== - glfwInit(); - glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 3 ); - glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3 ); - glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE ); - glfwWindowHint( GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE ); - -#ifdef VG_CAPTURE_MODE - glfwWindowHint( GLFW_RESIZABLE, GLFW_FALSE ); -#else - glfwWindowHint( GLFW_RESIZABLE, GLFW_TRUE ); -#endif - - glfwWindowHint( GLFW_SAMPLES, 4 ); - - GLFWmonitor *monitor_primary = glfwGetPrimaryMonitor(); - - const GLFWvidmode *mode = glfwGetVideoMode( monitor_primary ); - glfwWindowHint( GLFW_RED_BITS, mode->redBits ); - glfwWindowHint( GLFW_GREEN_BITS, mode->greenBits ); - glfwWindowHint( GLFW_BLUE_BITS, mode->blueBits ); - glfwWindowHint( GLFW_REFRESH_RATE, mode->refreshRate ); - - if( !(vg_window = glfwCreateWindow( vg_window_x, vg_window_y, window_name, NULL, NULL)) ) - { - vg_exiterr( "GLFW Failed to initialize" ); - } - else - { - vg_register_exit( &glfwTerminate, "glfwTerminate" ); - } - - glfwMakeContextCurrent( vg_window ); - glfwSwapInterval( 1 ); - - // Set callbacks - glfwSetFramebufferSizeCallback( vg_window, vg_framebuffer_resize_callback ); - - glfwSetCursorPosCallback( vg_window, vg_mouse_callback ); - glfwSetScrollCallback( vg_window, vg_scroll_callback ); - - glfwSetCharCallback( vg_window, console_proc_wchar ); - glfwSetKeyCallback( vg_window, console_proc_key ); - //glfwSetInputMode(vg_window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); - - if( !gladLoadGLLoader((GLADloadproc)glfwGetProcAddress) ) - { - vg_exiterr( "Glad failed to initialize" ); - } - - const unsigned char* glver = glGetString( GL_VERSION ); - vg_success( "Load setup complete, OpenGL version: %s\n", glver ); - - vg_run_gfx_diagnostics(); - - for( int id = 0; id <= GLFW_JOYSTICK_LAST; id ++ ) - { - if( glfwJoystickIsGamepad( id ) ) - { - vg_gamepad_name = glfwGetGamepadName( id ); - vg_success( "Gamepad with mapping registered: %s\n", vg_gamepad_name ); - - vg_gamepad_ready = 1; - vg_gamepad_id = id; - - break; - } - } - - vg_lines_init(); - vg_register_exit( &vg_lines_free, "vg_lines_free" ); - ui_default_init(); - vg_register_exit( &ui_default_free, "UI" ); - - vg_register(); - vg_register_exit( &vg_free, "vg_free" ); - - if( vg_shaders_compile() ) - { - vg_start(); - - vg_console_init(); - vg_register_exit( &vg_console_free, "Console" ); - - vg_audio_init(); - vg_register_exit( &vg_audio_free, "vg_audio_free" ); - - vg_debugtools_setup(); - - // Main gameloop - while( !glfwWindowShouldClose( vg_window ) ) - { - v2_copy( (v2f){ 0.0f, 0.0f }, vg_mouse_wheel ); - - glfwPollEvents(); - - #ifdef VG_STEAM - sw_event_loop(); - #endif - - vg_time_last = vg_time; - vg_time = glfwGetTime(); - vg_time_delta = vg_minf( vg_time - vg_time_last, 0.1f ); - - vg_update_inputs(); - vg_update(); - vg_render(); - - vg_lines_drawall((float*)vg_pv); - - { - ui_begin( &ui_global_ctx, vg_window_x, vg_window_y ); - ui_set_mouse( &ui_global_ctx, vg_mouse[0], vg_mouse[1], vg_get_button_state( "primary" ) ); - - vg_ui(); - vg_console_draw(); - vg_debugtools_draw(); - - ui_resolve( &ui_global_ctx ); - ui_draw( &ui_global_ctx, NULL ); - } - - glfwSwapBuffers( vg_window ); - - VG_CHECK_GL(); - } - } - - vg_exit(); -} - -// Screen projections -// ============================================================================================ - -void vg_projection_update(void) -{ - // Do transform local->world - vg_mouse_ws[0] = vg_mouse[0]; - vg_mouse_ws[1] = vg_mouse[1]; - vg_mouse_ws[2] = 1.0f; - - vg_mouse_ws[0] = (2.0f * vg_mouse_ws[0]) / ((float)vg_window_x) - 1.0f; - vg_mouse_ws[1] = -((2.0f * vg_mouse_ws[1]) / ((float)vg_window_y) - 1.0f); - - m3x3f inverse; - m3x3_inv( vg_pv, inverse ); - m3x3_mulv( inverse, vg_mouse_ws, vg_mouse_ws ); -} - -#endif - -u32 NvOptimusEnablement = 0x00000001; -int AmdPowerXpressRequestHighPerformance = 1;