Browse Source

optional constants, starting GL2 fixes

Skytrias 2 years ago
parent
commit
86fada718e
1 changed files with 12 additions and 12 deletions
  1. 12 12
      vendor/nanovg/gl/gl.odin

+ 12 - 12
vendor/nanovg/gl/gl.odin

@@ -26,9 +26,7 @@ CreateFlag :: enum {
 }
 CreateFlags :: bit_set[CreateFlag]
 
-FRAG_BINDING :: 0
-USE_STATE_FILTER :: true
-GL_UNIFORMARRAY_SIZE :: 11
+USE_STATE_FILTER :: #config(USE_STATE_FILTER, true)
 
 UniformLoc :: enum {
 	VIEW_SIZE,
@@ -92,6 +90,7 @@ Path :: struct {
 }
 
 when GL2_IMPLEMENTATION {
+	GL_UNIFORMARRAY_SIZE :: 11
 	FragUniforms :: struct #raw_union {
 		using _: struct {
 			scissorMat: [12]f32, // matrices are actually 3 vec4s
@@ -128,10 +127,11 @@ when GL2_IMPLEMENTATION {
 	}
 }
 
-GL2_IMPLEMENTATION :: false
-GL3_IMPLEMENTATION :: true
-GLES2_IMPLEMENTATION :: false
-GLES3_IMPLEMENTATION :: false
+DEFAULT_IMPLEMENTATION_STRING :: #config(NANOVG_GL_IMPL, "GL3")
+GL2_IMPLEMENTATION   :: DEFAULT_IMPLEMENTATION_STRING  == "GL2"
+GL3_IMPLEMENTATION   :: DEFAULT_IMPLEMENTATION_STRING  == "GL3"
+GLES2_IMPLEMENTATION :: DEFAULT_IMPLEMENTATION_STRING  == "GLES2"
+GLES3_IMPLEMENTATION :: DEFAULT_IMPLEMENTATION_STRING  == "GLES3"
 
 when GL2_IMPLEMENTATION {
 	GL2 :: true
@@ -174,6 +174,7 @@ Context :: struct {
 	fragBuf: u32, // USE_UNIFORMBUFFER
 	fragSize: int,
 	flags: CreateFlags,
+	frag_binding: u32,
 
 	// Per frame buffers
 	calls: [dynamic]Call,
@@ -372,7 +373,7 @@ __renderCreate :: proc(uptr: rawptr) -> bool {
 
 	when GL_USE_UNIFORMBUFFER {
 		// Create UBOs
-		gl.UniformBlockBinding(ctx.shader.prog, u32(ctx.shader.loc[.FRAG]), FRAG_BINDING)
+		gl.UniformBlockBinding(ctx.shader.prog, u32(ctx.shader.loc[.FRAG]), ctx.frag_binding)
 		gl.GenBuffers(1, &ctx.fragBuf)
 		gl.GetIntegerv(gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT, &align)
 	} 
@@ -436,7 +437,7 @@ __renderCreateTexture :: proc(
 
 	when GL2 {
 		if .GENERATE_MIPMAPS in imageFlags {
-			gl.TexParameteri(gl.TEXTURE_2D, GENERATE_MIPMAP, 1)
+			gl.TexParameteri(gl.TEXTURE_2D, gl.GENERATE_MIPMAP, 1)
 		}
 	}
 
@@ -444,8 +445,7 @@ __renderCreateTexture :: proc(
 		gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, i32(w), i32(h), 0, gl.RGBA, gl.UNSIGNED_BYTE, raw_data(data))
 	} else {
 		when GLES2 || GL2 {
-			// TODO missing in odin
-			gl.TexImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, data)
+			gl.TexImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, i32(w), i32(h), 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, raw_data(data))
 		} else when GLES3 {
 			gl.TexImage2D(gl.TEXTURE_2D, 0, gl.R8, i32(w), i32(h), 0, gl.RED, gl.UNSIGNED_BYTE, raw_data(data))
 		} else {
@@ -783,7 +783,7 @@ __convertPaint :: proc(
 
 __setUniforms :: proc(ctx: ^Context, uniformOffset: int, image: int) {
 	when GL_USE_UNIFORMBUFFER {
-		gl.BindBufferRange(gl.UNIFORM_BUFFER, FRAG_BINDING, ctx.fragBuf, uniformOffset, size_of(FragUniforms))
+		gl.BindBufferRange(gl.UNIFORM_BUFFER, ctx.frag_binding, ctx.fragBuf, uniformOffset, size_of(FragUniforms))
 	} else {
 		frag := __fragUniformPtr(ctx, uniformOffset)
 		gl.Uniform4fv(ctx.shader.loc[.FRAG], GL_UNIFORMARRAY_SIZE, cast(^f32) frag)