aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-12-02 17:51:53 +0100
committerdec05eba <dec05eba@protonmail.com>2021-12-02 17:52:40 +0100
commita77da0acc88c7fb861043fd0dcb9cc6536e591f1 (patch)
tree1711f4c5fd4f0474a080caf872ccb144f5d028dd /src
parent8792ee2cc5b501f0611e6304f529226a495825db (diff)
Window: add scissor
Diffstat (limited to 'src')
-rw-r--r--src/gl.c1
-rw-r--r--src/window/window.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/gl.c b/src/gl.c
index f7607c2..e9eeacb 100644
--- a/src/gl.c
+++ b/src/gl.c
@@ -34,6 +34,7 @@ int mgl_gl_load(mgl_gl *self) {
{ &self->glXSwapBuffers, "glXSwapBuffers" },
{ &self->glViewport, "glViewport" },
+ { &self->glScissor, "glScissor" },
{ &self->glClearColor, "glClearColor" },
{ &self->glClear, "glClear" },
{ &self->glEnable, "glEnable" },
diff --git a/src/window/window.c b/src/window/window.c
index 13bb4ba..8a6edbb 100644
--- a/src/window/window.c
+++ b/src/window/window.c
@@ -231,6 +231,7 @@ static void mgl_window_on_resize(mgl_window *self, int width, int height) {
view.position = (mgl_vec2i){ 0, 0 };
view.size = self->size;
mgl_window_set_view(self, &view);
+ mgl_window_set_scissor(self, &(mgl_scissor){ .position = { 0, 0 }, .size = self->size });
}
static int mgl_window_init(mgl_window *self, const char *title, const mgl_window_create_params *params, Window existing_window) {
@@ -721,6 +722,16 @@ void mgl_window_get_view(mgl_window *self, mgl_view *view) {
*view = self->view;
}
+void mgl_window_set_scissor(mgl_window *self, mgl_scissor *new_scissor) {
+ mgl_context *context = mgl_get_context();
+ self->scissor = *new_scissor;
+ context->gl.glScissor(self->scissor.position.x, self->scissor.position.y, self->scissor.size.x, self->scissor.size.y);
+}
+
+void mgl_window_get_scissor(mgl_window *self, mgl_scissor *scissor) {
+ *scissor = self->scissor;
+}
+
bool mgl_window_is_open(const mgl_window *self) {
return self->open;
}