aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSkytrias <skytrias@protonmail.com>2022-12-24 11:30:15 +0100
committerSkytrias <skytrias@protonmail.com>2022-12-24 11:30:15 +0100
commit86fada718ebd8a11f3560f7b9585d74c8840f66f (patch)
tree4298cf391d9b0a11d372a7760d806160f0e46171
parent2a94b66f4da048adda1710f2e29450c8767be600 (diff)
optional constants, starting GL2 fixes
-rw-r--r--vendor/nanovg/gl/gl.odin24
1 files changed, 12 insertions, 12 deletions
diff --git a/vendor/nanovg/gl/gl.odin b/vendor/nanovg/gl/gl.odin
index 72b469ddb..9645c1696 100644
--- a/vendor/nanovg/gl/gl.odin
+++ b/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)