diff options
Diffstat (limited to 'imgui-1.92.1/examples/libs/emscripten')
| -rw-r--r-- | imgui-1.92.1/examples/libs/emscripten/emscripten_mainloop_stub.h | 38 | ||||
| -rw-r--r-- | imgui-1.92.1/examples/libs/emscripten/shell_minimal.html | 65 |
2 files changed, 0 insertions, 103 deletions
diff --git a/imgui-1.92.1/examples/libs/emscripten/emscripten_mainloop_stub.h b/imgui-1.92.1/examples/libs/emscripten/emscripten_mainloop_stub.h deleted file mode 100644 index 8c4c48e..0000000 --- a/imgui-1.92.1/examples/libs/emscripten/emscripten_mainloop_stub.h +++ /dev/null @@ -1,38 +0,0 @@ -// What does this file solves? -// - Since Dear ImGui 1.00 we took pride that most of our examples applications had their entire -// main-loop inside the main() function. That's because: -// - It makes the examples easier to read, keeping the code sequential. -// - It permit the use of local variables, making it easier to try things and perform quick -// changes when someone needs to quickly test something (vs having to structure the example -// in order to pass data around). This is very important because people use those examples -// to craft easy-to-past repro when they want to discuss features or report issues. -// - It conveys at a glance that this is a no-BS framework, it won't take your main loop away from you. -// - It is generally nice and elegant. -// - However, comes Emscripten... it is a wonderful and magical tech but it requires a "main loop" function. -// - Only some of our examples would run on Emscripten. Typically the ones rendering with GL or WGPU ones. -// - I tried to refactor those examples but felt it was problematic that other examples didn't follow the -// same layout. Why would the SDL+GL example be structured one way and the SGL+DX11 be structured differently? -// Especially as we are trying hard to convey that using a Dear ImGui backend in an *existing application* -// should requires only a few dozens lines of code, and this should be consistent and symmetrical for all backends. -// - So the next logical step was to refactor all examples to follow that layout of using a "main loop" function. -// This worked, but it made us lose all the nice things we had... - -// Since only about 4 examples really need to run with Emscripten, here's our solution: -// - Use some weird macros and capturing lambda to turn a loop in main() into a function. -// - Hide all that crap in this file so it doesn't make our examples unusually ugly. -// As a stance and principle of Dear ImGui development we don't use C++ headers and we don't -// want to suggest to the newcomer that we would ever use C++ headers as this would affect -// the initial judgment of many of our target audience. -// - Technique is based on this idea: https://github.com/ocornut/imgui/pull/2492/ -// - The do { } while (0) is to allow our code calling continue in the main loop. -#ifdef __EMSCRIPTEN__ -#include <emscripten.h> -#include <functional> -static std::function<void()> MainLoopForEmscriptenP; -static void MainLoopForEmscripten() { MainLoopForEmscriptenP(); } -#define EMSCRIPTEN_MAINLOOP_BEGIN MainLoopForEmscriptenP = [&]() { do -#define EMSCRIPTEN_MAINLOOP_END while (0); }; emscripten_set_main_loop(MainLoopForEmscripten, 0, true) -#else -#define EMSCRIPTEN_MAINLOOP_BEGIN -#define EMSCRIPTEN_MAINLOOP_END -#endif diff --git a/imgui-1.92.1/examples/libs/emscripten/shell_minimal.html b/imgui-1.92.1/examples/libs/emscripten/shell_minimal.html deleted file mode 100644 index bcf6262..0000000 --- a/imgui-1.92.1/examples/libs/emscripten/shell_minimal.html +++ /dev/null @@ -1,65 +0,0 @@ -<!doctype html> -<html lang="en-us"> - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/> - <title>Dear ImGui Emscripten example</title> - <style> - body { margin: 0; background-color: black } - /* FIXME: with our GLFW example this block seems to break resizing and io.DisplaySize gets stuck */ - .emscripten { - position: absolute; - top: 0px; - left: 0px; - margin: 0px; - border: 0; - width: 100%; - height: 100%; - overflow: hidden; - display: block; - image-rendering: optimizeSpeed; - image-rendering: -moz-crisp-edges; - image-rendering: -o-crisp-edges; - image-rendering: -webkit-optimize-contrast; - image-rendering: optimize-contrast; - image-rendering: crisp-edges; - image-rendering: pixelated; - -ms-interpolation-mode: nearest-neighbor; - } - </style> - </head> - <body> - <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas> - <script type='text/javascript'> - var Module = { - preRun: [], - postRun: [], - print: (function() { - return function(text) { - text = Array.prototype.slice.call(arguments).join(' '); - console.log(text); - }; - })(), - printErr: function(text) { - text = Array.prototype.slice.call(arguments).join(' '); - console.error(text); - }, - canvas: (function() { - var canvas = document.getElementById('canvas'); - //canvas.addEventListener("webglcontextlost", function(e) { alert('FIXME: WebGL context lost, please reload the page'); e.preventDefault(); }, false); - return canvas; - })(), - setStatus: function(text) { - console.log("status: " + text); - }, - monitorRunDependencies: function(left) { - // no run dependencies to log - } - }; - window.onerror = function() { - console.log("onerror: " + event); - }; - </script> - {{{ SCRIPT }}} - </body> -</html> |
