src/ascension/glcontext.h

changeset 90
aa8e7a38905c
parent 88
6234b7ea48f3
--- a/src/ascension/glcontext.h	Mon Apr 21 17:27:33 2025 +0200
+++ b/src/ascension/glcontext.h	Mon Apr 21 17:52:01 2025 +0200
@@ -41,26 +41,37 @@
     int depth_size;
 } AscGLContextSettings;
 
+enum AscDefaultPrimitives {
+    ASC_PRIMITIVE_PLANE_IDX = 0,
+    ASC_PRIMITIVE_COUNT
+};
+
+enum AscDefaultTextures2d {
+    ASC_TEXTURE_2D_EMPTY_1X1_IDX = 0,
+    ASC_TEXTURE_2D_COUNT
+};
+
+enum AscDefaultTexturesRect {
+    ASC_TEXTURE_RECT_EMPTY_1X1_IDX = 0,
+    ASC_TEXTURE_RECT_COUNT
+};
+
 typedef struct AscGLContext {
     SDL_Window *window;
     SDL_GLContext glctx;
-    struct {
-        AscMesh plane;
-    } primitives;
+    AscMesh primitives[ASC_PRIMITIVE_COUNT];
+    AscTexture textures_2d[ASC_TEXTURE_2D_COUNT];
+    AscTexture textures_rect[ASC_TEXTURE_RECT_COUNT];
     struct {
         AscShaderSprite sprite;
     } shader;
-    struct {
-        AscTexture empty_1x1_2d;
-        AscTexture empty_1x1_rect;
-    } textures;
 } AscGLContext;
 
-#define ASC_PRIMITIVES asc_active_window->glctx.primitives
-
-#define ASC_DEFAULT_SHADER asc_active_window->glctx.shader
-
-#define ASC_DEFAULT_TEXTURES asc_active_window->glctx.textures
+#define asc_active_glctx (&asc_active_window->glctx)
+#define ASC_PRIMITIVE_PLANE (&asc_active_glctx->primitives[ASC_PRIMITIVE_PLANE_IDX])
+#define ASC_TEXTURE_2D_EMPTY_1X1 (&asc_active_glctx->textures_2d[ASC_TEXTURE_2D_EMPTY_1X1_IDX])
+#define ASC_TEXTURE_RECT_EMPTY_1X1 (&asc_active_glctx->textures_rect[ASC_TEXTURE_RECT_EMPTY_1X1_IDX])
+#define ASC_SHADER_SPRITE (&asc_active_glctx->shader.sprite)
 
 __attribute__((__nonnull__, __warn_unused_result__))
 bool asc_gl_context_initialize(

mercurial