summaryrefslogtreecommitdiff
path: root/themes/src/WebglContext.cpp
diff options
context:
space:
mode:
authormattkae <mattkae@protonmail.com>2022-12-23 12:47:10 -0500
committermattkae <mattkae@protonmail.com>2022-12-23 12:47:10 -0500
commit7228b2e1a2d0a8399facce3493d71a3569d250d5 (patch)
tree8eb5e4b686bf68fa12fcbb270ef88dd29aa1d704 /themes/src/WebglContext.cpp
parentf63d0af456f76d713e56ca17be114fba0af22f6c (diff)
Improved the makefile considerably
Diffstat (limited to 'themes/src/WebglContext.cpp')
-rw-r--r--themes/src/WebglContext.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/themes/src/WebglContext.cpp b/themes/src/WebglContext.cpp
new file mode 100644
index 0000000..df49c2d
--- /dev/null
+++ b/themes/src/WebglContext.cpp
@@ -0,0 +1,46 @@
+#include "WebglContext.h"
+#include <cstdio>
+
+
+EM_BOOL onResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData) {
+ WebglContext* context = (WebglContext*)userData;
+
+ f64 inWidth, inHeight;
+ emscripten_get_element_css_size(context->query, &inWidth, &inHeight);
+
+ context->width = static_cast<f32>(inWidth);
+ context->height = static_cast<f32>(inHeight);
+
+ return true;
+}
+
+void WebglContext::init(const char* inQuery) {
+ strcpy(query, inQuery);
+ f64 inWidth, inHeight;
+ emscripten_get_element_css_size(query, &inWidth, &inHeight);
+ width = static_cast<f32>(inWidth);
+ height = static_cast<f32>(inHeight);
+ emscripten_set_canvas_element_size( query, width, height);
+
+ EmscriptenWebGLContextAttributes attrs;
+ emscripten_webgl_init_context_attributes(&attrs);
+
+ attrs.enableExtensionsByDefault = 1;
+ attrs.majorVersion = 3;
+ attrs.minorVersion = 0;
+
+ context = emscripten_webgl_create_context(query, &attrs);
+ makeCurrentContext();
+
+ glClearColor(0, 0, 0, 0.0f);
+
+ emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, this, false, onResize);
+};
+
+void WebglContext::makeCurrentContext() {
+ emscripten_webgl_make_context_current(context);
+};
+
+void WebglContext::destroy() {
+ emscripten_webgl_destroy_context(context);
+}