From ba6d14a7737ef7cd02b61586e39ca2162df3018d Mon Sep 17 00:00:00 2001 From: Kasullian Date: Mon, 8 Sep 2025 23:20:06 -0400 Subject: glew, map parsing for windows --- src/render/gl.cpp | 61 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 19 deletions(-) (limited to 'src/render/gl.cpp') diff --git a/src/render/gl.cpp b/src/render/gl.cpp index 915722e..6654dd4 100644 --- a/src/render/gl.cpp +++ b/src/render/gl.cpp @@ -29,7 +29,7 @@ GL_DATA* gl_create( I32* _canvas ) { return 0; } - SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES ); + SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE ); SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 3 ); SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 2 ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); @@ -43,8 +43,8 @@ GL_DATA* gl_create( I32* _canvas ) { GL_DATA* gl = new GL_DATA; gl->window = SDL_CreateWindow( "game", - 0, - 0, + SDL_WINDOWPOS_CENTERED, // Use centered position + SDL_WINDOWPOS_CENTERED, _canvas[0], _canvas[1], SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN @@ -52,22 +52,40 @@ GL_DATA* gl_create( I32* _canvas ) { if( !gl->window ) { dlog( "gl_init() could not create window: %s\n", SDL_GetError() ); - return 0; - } - - U32 renderer_flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE; - gl->renderer = SDL_CreateRenderer( gl->window, -1, renderer_flags ); - if( !gl->renderer ) { - dlog( "gl_init() could not create renderer: %s\n", SDL_GetError() ); + delete gl; return 0; } gl->ctx = SDL_GL_CreateContext( gl->window ); if( !gl->ctx ) { dlog( "gl_init() could not create context: %s\n", SDL_GetError() ); + SDL_DestroyWindow( gl->window ); + delete gl; + return 0; + } + + SDL_GL_MakeCurrent( gl->window, gl->ctx ); + + GLenum glewError = glewInit(); + if( glewError != GLEW_OK ) { + dlog( "gl_create() : Failed to initialize GLEW: %s\n", glewGetErrorString(glewError) ); + SDL_GL_DeleteContext( gl->ctx ); + SDL_DestroyWindow( gl->window ); + delete gl; return 0; } + dlog( "OpenGL Version: %s\n", glGetString(GL_VERSION) ); + dlog( "GLSL Version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION) ); + dlog( "Renderer: %s\n", glGetString(GL_RENDERER) ); + dlog( "Vendor: %s\n", glGetString(GL_VENDOR) ); + + // Set up V-Sync (0 = off, 1 = on, -1 = adaptive) + SDL_GL_SetSwapInterval(1); + + // Clear any OpenGL errors that might have occurred during initialization + while( glGetError() != GL_NO_ERROR ); + glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS, &gl->shader_texture_limit ); if( gl->shader_texture_limit > 255 ) gl->shader_texture_limit = 255; @@ -78,18 +96,28 @@ GL_DATA* gl_create( I32* _canvas ) { memcpy( gl->canvas_size, _canvas, sizeof(I32) * 2 ); gl->clip_start = { 0, 0 }; gl->clip_dim = { (F32)gl->canvas_size[0], (F32)gl->canvas_size[1] }; + + // Set initial viewport + glViewport( 0, 0, gl->canvas_size[0], gl->canvas_size[1] ); + + // Set initial clear color (so you can see if clearing is working) + glClearColor( 0.2f, 0.2f, 0.2f, 1.0f ); gl_inst = gl; return gl; } void gl_gen_buffers( GL_DATA* gl ) { + // Generate and bind VAO first + glGenVertexArrays( 1, &gl->vao ); + glBindVertexArray( gl->vao ); + glGenBuffers( 1, &gl->vbuffer ); - glBindBuffer( GL_ARRAY_BUFFER, gl->vbuffer ); glBufferData( GL_ARRAY_BUFFER, 8192, 0, GL_STATIC_DRAW ); - glBindBuffer( GL_ARRAY_BUFFER, 0 ); + + glBindVertexArray( 0 ); // Unbind VAO } void gl_destroy( GL_DATA *gl ) { @@ -131,7 +159,7 @@ void gl_update_window( GL_DATA* gl, I32* size ) { glUseProgram( 0 ); } -STAT gl_shader_compile( GL_DATA* gl, GL_SHADER* shader ) { +STAT gl_shader_compile( GL_DATA* gl, GL_SHADER_DEF* shader ) { static char* log_buf = 0; if( !log_buf ) log_buf = (char*)malloc( 8192 ); @@ -154,7 +182,7 @@ STAT gl_shader_compile( GL_DATA* gl, GL_SHADER* shader ) { return STAT_OK; } -void gl_shader_destroy( GL_DATA* gl, GL_SHADER* shader ) { +void gl_shader_destroy( GL_DATA* gl, GL_SHADER_DEF* shader ) { if( shader->code ) free( (void*)shader->code ); } @@ -287,7 +315,6 @@ GL_TEX2D* gl_texture_from_bitmap( GL_DATA* gl, const char* name, U8* bitmap, U32 return tex; } - GL_TEX2D* gl_texture_create( GL_DATA* gl, const char* name ) { GL_TEX2D* tex = (GL_TEX2D*)malloc( sizeof(GL_TEX2D) ); strcpy( tex->name, name ); @@ -307,10 +334,6 @@ void gl_texture_destroy( GL_DATA* gl, GL_TEX2D* tex ) { } STAT gl_beginframe( GL_DATA* gl ) { - SDL_SetRenderTarget( gl->renderer, 0 ); - SDL_SetRenderDrawColor( gl->renderer, 0, 0, 0, 255 ); - SDL_RenderClear( gl->renderer ); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); gl->last_tick = u_tick(); return STAT_OK; -- cgit v1.2.3 From 235926dadb686589f0b5480162c3ab929159e570 Mon Sep 17 00:00:00 2001 From: navewindre Date: Wed, 10 Sep 2025 12:25:00 +0200 Subject: unfuck --- src/render/gl.cpp | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) (limited to 'src/render/gl.cpp') diff --git a/src/render/gl.cpp b/src/render/gl.cpp index 6654dd4..c084db0 100644 --- a/src/render/gl.cpp +++ b/src/render/gl.cpp @@ -43,7 +43,7 @@ GL_DATA* gl_create( I32* _canvas ) { GL_DATA* gl = new GL_DATA; gl->window = SDL_CreateWindow( "game", - SDL_WINDOWPOS_CENTERED, // Use centered position + SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _canvas[0], _canvas[1], @@ -64,6 +64,7 @@ GL_DATA* gl_create( I32* _canvas ) { return 0; } + SDL_GL_SetSwapInterval(0); SDL_GL_MakeCurrent( gl->window, gl->ctx ); GLenum glewError = glewInit(); @@ -75,17 +76,8 @@ GL_DATA* gl_create( I32* _canvas ) { return 0; } - dlog( "OpenGL Version: %s\n", glGetString(GL_VERSION) ); - dlog( "GLSL Version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION) ); - dlog( "Renderer: %s\n", glGetString(GL_RENDERER) ); - dlog( "Vendor: %s\n", glGetString(GL_VENDOR) ); - - // Set up V-Sync (0 = off, 1 = on, -1 = adaptive) - SDL_GL_SetSwapInterval(1); - - // Clear any OpenGL errors that might have occurred during initialization - while( glGetError() != GL_NO_ERROR ); - + while( glGetError() != GL_NO_ERROR ); // clear errors + // glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS, &gl->shader_texture_limit ); if( gl->shader_texture_limit > 255 ) gl->shader_texture_limit = 255; @@ -96,28 +88,22 @@ GL_DATA* gl_create( I32* _canvas ) { memcpy( gl->canvas_size, _canvas, sizeof(I32) * 2 ); gl->clip_start = { 0, 0 }; gl->clip_dim = { (F32)gl->canvas_size[0], (F32)gl->canvas_size[1] }; - - // Set initial viewport glViewport( 0, 0, gl->canvas_size[0], gl->canvas_size[1] ); - - // Set initial clear color (so you can see if clearing is working) - glClearColor( 0.2f, 0.2f, 0.2f, 1.0f ); gl_inst = gl; return gl; } void gl_gen_buffers( GL_DATA* gl ) { - // Generate and bind VAO first glGenVertexArrays( 1, &gl->vao ); glBindVertexArray( gl->vao ); - + glGenBuffers( 1, &gl->vbuffer ); glBindBuffer( GL_ARRAY_BUFFER, gl->vbuffer ); glBufferData( GL_ARRAY_BUFFER, 8192, 0, GL_STATIC_DRAW ); glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindVertexArray( 0 ); // Unbind VAO + glBindVertexArray( 0 ); } void gl_destroy( GL_DATA *gl ) { -- cgit v1.2.3 From e2366afb57d69f3952bbb4d1894d82293cd1cb9d Mon Sep 17 00:00:00 2001 From: Kasullian Date: Wed, 10 Sep 2025 07:16:42 -0400 Subject: remove unnecessary code --- src/render/gl.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/render/gl.cpp') diff --git a/src/render/gl.cpp b/src/render/gl.cpp index c084db0..382d81e 100644 --- a/src/render/gl.cpp +++ b/src/render/gl.cpp @@ -102,8 +102,6 @@ void gl_gen_buffers( GL_DATA* gl ) { glBindBuffer( GL_ARRAY_BUFFER, gl->vbuffer ); glBufferData( GL_ARRAY_BUFFER, 8192, 0, GL_STATIC_DRAW ); glBindBuffer( GL_ARRAY_BUFFER, 0 ); - - glBindVertexArray( 0 ); } void gl_destroy( GL_DATA *gl ) { -- cgit v1.2.3 From e3de3ba5162f7ddd5005911124d4333e140fd984 Mon Sep 17 00:00:00 2001 From: navewindre Date: Thu, 27 Nov 2025 17:19:02 +0100 Subject: bunch o stuff --- src/render/gl.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'src/render/gl.cpp') diff --git a/src/render/gl.cpp b/src/render/gl.cpp index 382d81e..e44a165 100644 --- a/src/render/gl.cpp +++ b/src/render/gl.cpp @@ -276,7 +276,7 @@ GL_TEX2D* gl_texture_from_file( GL_DATA* gl, const char* name ) { return tex; } -GL_TEX2D* gl_texture_from_bitmap( GL_DATA* gl, const char* name, U8* bitmap, U32 width, U32 height ) { +GL_TEX2D* gl_texture_from_bitmap( GL_DATA* gl, const char* name, U8* bitmap, U32 w, U32 h ) { GL_TEX2D* tex = gl_texture_create( gl, name ); glBindTexture( GL_TEXTURE_2D, tex->id ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); @@ -284,18 +284,13 @@ GL_TEX2D* gl_texture_from_bitmap( GL_DATA* gl, const char* name, U8* bitmap, U32 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - tex->width = width; - tex->height = height; - - glTexImage2D( - GL_TEXTURE_2D, - 0, GL_RGBA, - (I32)width, (I32)height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, bitmap - ); - + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, bitmap ); + glGenerateMipmap( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, 0 ); + tex->width = w; + tex->height = h; + return tex; } -- cgit v1.2.3