#ifndef CX_H #define CX_H // Include standard headers #include #include #include #include #include #include #include #include // Include GLEW #include // Include GLFW #define GLFW_INCLUDE_VULKAN #include // Include project headers #include #include #include #include #include #include // Declare common data structures. typedef struct _cx_gl_ctx { GLFWwindow *window; ModelRegistry *mr; GLuint *VertexArrayIDs; void (*free)(void *self); size_t VertexArray_count; size_t VertexArray_size; GLuint *programIDs; size_t ProgramID_count; size_t ProgramID_size; } CX_GL_CTX; typedef struct _cx_nn_ctx { Neural_Network *nn; float *input_buffer; float *output_buffer; void (*free)(void *self); } CX_NN_CTX; typedef struct _cx_ctx { CX_ThreadGroup **threads; CX_GL_CTX *gl_ctx; CX_NN_CTX *nn_ctx; } CX_Context; // Declare functions CX_Context *cx_context_new(void); int cx_glinit(CX_GL_CTX **); int cx_nninit(Neural_Network **); int cx_init(CX_Context **); int cx_run(CX_Context *); #endif