foo
authorJohn Tsiombikas <nuclear@member.fsf.org>
Fri, 5 Apr 2024 12:26:35 +0000 (15:26 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Fri, 5 Apr 2024 12:26:35 +0000 (15:26 +0300)
src/gfx.h
src/gl/opengl.c
test.c

index 61eac33..fc9816a 100644 (file)
--- a/src/gfx.h
+++ b/src/gfx.h
@@ -30,10 +30,24 @@ enum nex_sdr_type {
        NEX_SDR_PIXEL
 };
 
+enum nex_tex_type {
+       NEX_TEX1D,
+       NEX_TEX2D,
+       NEX_TEX3D,
+       NEX_TEXCUBE
+};
+
+enum nex_cube_face {
+       NEX_CUBE_PX, NEX_CUBE_NX,
+       NEX_CUBE_PY, NEX_CUBE_NY,
+       NEX_CUBE_PZ, NEX_CUBE_NZ
+};
+
 typedef struct nex_buffer nex_buffer;
 typedef struct nex_geometry nex_geometry;
 typedef struct nex_shader nex_shader;
 typedef struct nex_sdrprog nex_sdrprog;
+typedef struct nex_texture nex_texture;
 
 void nex_clear(void);
 void nex_clearcolor(float r, float g, float b);
@@ -86,4 +100,8 @@ void nex_uniform_mat4_name(nex_sdrprog *prog, const char *name, const float *mat
 nex_shader *nex_load_shader(const char *path, enum nex_sdr_type type);
 nex_sdrprog *nex_load_sdrprog(const char *vpath, const char *ppath);
 
+/* --- textures --- */
+nex_texture *nex_alloc_texture(enum nex_tex_type type);
+void nex_free_texture(nex_texture *tex);
+
 #endif /* NEXUS3D_GFX_H_ */
index 06fedef..97ac185 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include "opengl.h"
+#include "nexus3d_impl.h"
 
 static void GLAPIENTRY gldebug_logger(GLenum src, GLenum type, GLuint id, GLenum severity,
                GLsizei len, const char *msg, const void *cls);
@@ -14,7 +15,10 @@ int init_gl(void)
 {
        glewInit();
 
-       glDebugMessageCallbackARB(gldebug_logger, 0);
+       if(nex_apicfg.gl.flags & NEX_OPENGL_DEBUG) {
+               glDebugMessageCallbackARB(gldebug_logger, 0);
+               glEnable(GL_DEBUG_OUTPUT);
+       }
        return 0;
 }
 
diff --git a/test.c b/test.c
index 579cbe2..b74f6a5 100644 (file)
--- a/test.c
+++ b/test.c
@@ -14,21 +14,29 @@ static void mmove(int x, int y, void *cls);
 #define ATTR_COL       1
 
 static const float vdata[] = {
-       -1, -1, 1, 1, -1, 1, 1, -1, -1, -1, -1, -1,
-       -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1
+       -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1,
+       1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1,
+       1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1,
+       -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1,
+       -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1,
+       -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1
 };
 static const float vcolors[] = {
-       1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0,
-       0, 1, 1, 1, 0, 1, 1, 0.5, 0, 0.5, 0.5, 0.5
+       1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
+       0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,
+       0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
+       1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
+       1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0,
+       0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1
 };
 
 static const unsigned int idata[] = {
-       0, 1, 5,        0, 5, 4,
-       1, 2, 6,        1, 6, 5,
-       2, 3, 7,        2, 7, 6,
-       3, 0, 4,        3, 4, 7,
-       4, 5, 6,        4, 6, 7,
-       1, 0, 3,        1, 3, 2
+       0, 1, 2, 0, 2, 3,
+       4, 5, 6, 4, 6, 7,
+       8, 9, 10, 8, 10, 11,
+       12, 13, 14, 12, 14, 15,
+       16, 17, 18, 16, 18, 19,
+       20, 21, 22, 20, 22, 23
 };