mirror of
https://github.com/odin-lang/Odin.git
synced 2026-03-02 06:38:21 +00:00
optional constants, starting GL2 fixes
This commit is contained in:
24
vendor/nanovg/gl/gl.odin
vendored
24
vendor/nanovg/gl/gl.odin
vendored
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user