updates
This commit is contained in:
parent
0e15a6885a
commit
71b06fbb0e
2 changed files with 41 additions and 37 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
# Empty window
|
# Empty window
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
#include <cglm/cglm.h>
|
#include <cglm/cglm.h>
|
||||||
|
|
@ -11,29 +10,22 @@
|
||||||
#include <skr/skr.h>
|
#include <skr/skr.h>
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
SkrState state = SkrInit(&(SkrWindow){
|
SkrState state = SkrInit(
|
||||||
.Title = "Hello SKR",
|
&(SkrWindow){
|
||||||
.Width = 800,
|
.Title = "Hello SKR",
|
||||||
.Height = 600,
|
.Width = 800,
|
||||||
});
|
.Height = 600,
|
||||||
|
},
|
||||||
|
SKR_BACKEND_API_GL);
|
||||||
|
|
||||||
if (!SKR_OK) {
|
glewInit();
|
||||||
fprintf(stderr, "Failed to init window: %s\n", SKR_LAST_ERROR);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (glewInit() != GLEW_OK) {
|
SkrTriangle(&state);
|
||||||
fprintf(stderr, "Failed to init GLEW\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// SkrTriangle(&state);
|
while (!SkrShouldClose(&state)) {
|
||||||
|
|
||||||
while (!SkrWindowShouldClose(state.Window)) {
|
|
||||||
SkrRendererRender(&state);
|
SkrRendererRender(&state);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkrFinalize(&state);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
||||||
50
skr/skr.h
50
skr/skr.h
|
|
@ -509,6 +509,8 @@ typedef struct SkrState {
|
||||||
} Backend;
|
} Backend;
|
||||||
} SkrState;
|
} SkrState;
|
||||||
|
|
||||||
|
static bool m_skr_renderer_initialized = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
* @brief Set the last error message with source metadata.
|
* @brief Set the last error message with source metadata.
|
||||||
|
|
@ -1048,12 +1050,31 @@ static inline void m_skr_gl_renderer_finalize(SkrState* s) {
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void m_skr_renderer_finalize(SkrState* s) {
|
||||||
|
if (s->Backend.GL) {
|
||||||
|
m_skr_gl_renderer_finalize(s);
|
||||||
|
|
||||||
|
if (s->Window->Backend.Type == SKR_BACKEND_WINDOW_GLFW) {
|
||||||
|
glfwTerminate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s->Models = NULL;
|
||||||
|
s->ModelCount = 0;
|
||||||
|
s->Window = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
* @brief GLFW check if a GLFW window should close.
|
* @brief GLFW check if a GLFW window should close.
|
||||||
*/
|
*/
|
||||||
static inline int m_skr_gl_glfw_should_close(SkrWindow* w) {
|
static inline int m_skr_gl_glfw_should_close(SkrState* s) {
|
||||||
return glfwWindowShouldClose(w->Backend.Handler.GLFW);
|
if (glfwWindowShouldClose(s->Window->Backend.Handler.GLFW)) {
|
||||||
|
m_skr_renderer_finalize(s);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1177,9 +1198,9 @@ static inline SkrState SkrInit(SkrWindow* w, int backend) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int SkrWindowShouldClose(SkrWindow* w) {
|
static inline int SkrShouldClose(SkrState* s) {
|
||||||
if (SKR_BACKEND_WINDOW == SKR_BACKEND_WINDOW_GLFW) {
|
if (SKR_BACKEND_WINDOW == SKR_BACKEND_WINDOW_GLFW) {
|
||||||
return m_skr_gl_glfw_should_close(w);
|
return m_skr_gl_glfw_should_close(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -1239,7 +1260,7 @@ static inline void m_skr_gl_renderer_init(SkrState* s) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void SkrRendererInit(SkrState* s) {
|
static inline void m_skr_renderer_init(SkrState* s) {
|
||||||
if (!s)
|
if (!s)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -1251,6 +1272,11 @@ static inline void SkrRendererRender(SkrState* s) {
|
||||||
if (!s || !s->Window)
|
if (!s || !s->Window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!m_skr_renderer_initialized) {
|
||||||
|
m_skr_gl_renderer_init(s);
|
||||||
|
m_skr_renderer_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (SKR_BACKEND_WINDOW == SKR_BACKEND_WINDOW_GLFW) {
|
if (SKR_BACKEND_WINDOW == SKR_BACKEND_WINDOW_GLFW) {
|
||||||
if (s->Backend.GL) {
|
if (s->Backend.GL) {
|
||||||
m_skr_gl_glfw_renderer_render(s);
|
m_skr_gl_glfw_renderer_render(s);
|
||||||
|
|
@ -1258,20 +1284,6 @@ static inline void SkrRendererRender(SkrState* s) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void SkrFinalize(SkrState* s) {
|
|
||||||
if (s->Backend.GL) {
|
|
||||||
m_skr_gl_renderer_finalize(s);
|
|
||||||
|
|
||||||
if (s->Window->Backend.Type == SKR_BACKEND_WINDOW_GLFW) {
|
|
||||||
glfwTerminate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s->Models = NULL;
|
|
||||||
s->ModelCount = 0;
|
|
||||||
s->Window = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void m_skr_gl_triangle(SkrState* s) {
|
static inline void m_skr_gl_triangle(SkrState* s) {
|
||||||
static const char* triangle_vert =
|
static const char* triangle_vert =
|
||||||
"#version 330 core\n"
|
"#version 330 core\n"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue