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
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <GL/glew.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <cglm/cglm.h>
|
||||
|
|
@ -11,29 +10,22 @@
|
|||
#include <skr/skr.h>
|
||||
|
||||
int main(void) {
|
||||
SkrState state = SkrInit(&(SkrWindow){
|
||||
.Title = "Hello SKR",
|
||||
.Width = 800,
|
||||
.Height = 600,
|
||||
});
|
||||
SkrState state = SkrInit(
|
||||
&(SkrWindow){
|
||||
.Title = "Hello SKR",
|
||||
.Width = 800,
|
||||
.Height = 600,
|
||||
},
|
||||
SKR_BACKEND_API_GL);
|
||||
|
||||
if (!SKR_OK) {
|
||||
fprintf(stderr, "Failed to init window: %s\n", SKR_LAST_ERROR);
|
||||
return 1;
|
||||
}
|
||||
glewInit();
|
||||
|
||||
if (glewInit() != GLEW_OK) {
|
||||
fprintf(stderr, "Failed to init GLEW\n");
|
||||
return 1;
|
||||
}
|
||||
SkrTriangle(&state);
|
||||
|
||||
// SkrTriangle(&state);
|
||||
|
||||
while (!SkrWindowShouldClose(state.Window)) {
|
||||
while (!SkrShouldClose(&state)) {
|
||||
SkrRendererRender(&state);
|
||||
}
|
||||
|
||||
SkrFinalize(&state);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
|
|
|||
50
skr/skr.h
50
skr/skr.h
|
|
@ -509,6 +509,8 @@ typedef struct SkrState {
|
|||
} Backend;
|
||||
} SkrState;
|
||||
|
||||
static bool m_skr_renderer_initialized = false;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* @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);
|
||||
}
|
||||
|
||||
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
|
||||
* @brief GLFW check if a GLFW window should close.
|
||||
*/
|
||||
static inline int m_skr_gl_glfw_should_close(SkrWindow* w) {
|
||||
return glfwWindowShouldClose(w->Backend.Handler.GLFW);
|
||||
static inline int m_skr_gl_glfw_should_close(SkrState* s) {
|
||||
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;
|
||||
}
|
||||
|
||||
static inline int SkrWindowShouldClose(SkrWindow* w) {
|
||||
static inline int SkrShouldClose(SkrState* s) {
|
||||
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;
|
||||
|
|
@ -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)
|
||||
return;
|
||||
|
||||
|
|
@ -1251,6 +1272,11 @@ static inline void SkrRendererRender(SkrState* s) {
|
|||
if (!s || !s->Window)
|
||||
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 (s->Backend.GL) {
|
||||
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 const char* triangle_vert =
|
||||
"#version 330 core\n"
|
||||
|
|
|
|||
Loading…
Reference in a new issue