diff options
| author | Matt Kosarek <matt.kosarek@canonical.com> | 2025-12-29 09:34:00 -0500 |
|---|---|---|
| committer | Matt Kosarek <matt.kosarek@canonical.com> | 2025-12-29 09:34:00 -0500 |
| commit | bf4b3a5c35152c1292757134123b3363d0f81bf6 (patch) | |
| tree | 7796e03d309c43115596f78d553a74f911f82218 /themes/src/webgl_context.cpp | |
| parent | 25c93a0ab9c855f75ee48df635fb5422c8eaba95 (diff) | |
Renamed PascalCase files to snake_case
Diffstat (limited to 'themes/src/webgl_context.cpp')
| -rw-r--r-- | themes/src/webgl_context.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/themes/src/webgl_context.cpp b/themes/src/webgl_context.cpp new file mode 100644 index 0000000..71b983e --- /dev/null +++ b/themes/src/webgl_context.cpp @@ -0,0 +1,46 @@ +#include "webgl_context.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); +} |
