Hello everyone, 

To make a long story short I tried to create the simplest possible setup 
for a an opengl c++ demo and the problem I have seems to be related to the
the initialization of the canvas with regards to the eventlistener that is 
found in the javascript wrapper for the wasm file. I'm new to this so I'll 
just post 
the code in cpp, the html file, and the command line used to compile the 
project plus the error in chromium.

This is the glfw.cpp

#include <emscripten/emscripten.h>
#include <emscripten/bind.h>
using namespace emscripten;

#define GLFW_INCLUDE_ES3

#include <GLFW/glfw3.h>
#include <GLES3/gl3.h>


void initialize()
{
 // Initialise GLFW
if( !glfwInit() )
{
EM_ASM_({
  console.log(' failed: ');
}, 0); 
}

EM_ASM_({
  console.log(' end initialization: ');
}, 0); 
}
EMSCRIPTEN_BINDINGS(glfw) 
{   
    function("initialize", &initialize);
}


This is the glfw.html

<!doctype html>
<html> 
<head>
</head>
<body>
<canvas id="canvas" oncontextmenu="event.preventDefault()" style = "height: 
100%; width: 100%; background-color:red;"></canvas>
<script> 
var Module = 
{
canvas: function() 
{
console.log("canvas");
var canvas = document.getElementById('canvas');
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL 
context lost. You will need to reload the page.'); e.preventDefault(); }, 
false);

return canvas;
},
onRuntimeInitialized: function() 
{
Module.initialize();
} 
}; 
</script>
<script type="text/javascript" src="glfw.js"> </script> 
</body>
</html>


the command to compile the project

emcc --bind -o glfw.js glfw.cpp -s USE_GLFW=3 

and this is the complete error from the console.log in chromium

glfw.js:1645 Fetch finished loading: GET "http://localhost:8080/glfw.wasm";.
doNativeWasm @ glfw.js:1645
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.js:1650 wasm streaming compile failed: TypeError: 
Module.canvas.addEventListener is not a function
(anonymous) @ glfw.js:1650
Promise.catch (async)
doNativeWasm @ glfw.js:1647
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.js:1651 falling back to ArrayBuffer instantiation
(anonymous) @ glfw.js:1651
Promise.catch (async)
doNativeWasm @ glfw.js:1647
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.js:1560 Fetch finished loading: GET "http://localhost:8080/glfw.wasm";.
getBinaryPromise @ glfw.js:1560
instantiateArrayBuffer @ glfw.js:1633
(anonymous) @ glfw.js:1652
Promise.catch (async)
doNativeWasm @ glfw.js:1647
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.js:5228 Assertion failed: the Module object should not be replaced 
during async compilation - perhaps the order of HTML elements is wrong?
glfw.js:5229 Assertion failed: the Module object should not be replaced 
during async compilation - perhaps the order of HTML elements is wrong?
abort @ glfw.js:5229
assert @ glfw.js:434
receiveInstantiatedSource @ glfw.js:1628
Promise.then (async)
instantiateArrayBuffer @ glfw.js:1635
(anonymous) @ glfw.js:1652
Promise.catch (async)
doNativeWasm @ glfw.js:1647
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.js:1636 failed to asynchronously prepare wasm: abort("Assertion 
failed: the Module object should not be replaced during async compilation - 
perhaps the order of HTML elements is wrong?") at Error
    at jsStackTrace (http://localhost:8080/glfw.js:1033:13)
    at stackTrace (http://localhost:8080/glfw.js:1050:12)
    at abort (http://localhost:8080/glfw.js:5239:44)
    at assert (http://localhost:8080/glfw.js:434:5)
    at receiveInstantiatedSource (http://localhost:8080/glfw.js:1628:7)
(anonymous) @ glfw.js:1636
Promise.catch (async)
instantiateArrayBuffer @ glfw.js:1635
(anonymous) @ glfw.js:1652
Promise.catch (async)
doNativeWasm @ glfw.js:1647
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.js:5228 abort("Assertion failed: the Module object should not be 
replaced during async compilation - perhaps the order of HTML elements is 
wrong?") at Error
    at jsStackTrace (http://localhost:8080/glfw.js:1033:13)
    at stackTrace (http://localhost:8080/glfw.js:1050:12)
    at abort (http://localhost:8080/glfw.js:5239:44)
    at assert (http://localhost:8080/glfw.js:434:5)
    at receiveInstantiatedSource (http://localhost:8080/glfw.js:1628:7)
glfw.js:5229 abort("Assertion failed: the Module object should not be 
replaced during async compilation - perhaps the order of HTML elements is 
wrong?") at Error
    at jsStackTrace (http://localhost:8080/glfw.js:1033:13)
    at stackTrace (http://localhost:8080/glfw.js:1050:12)
    at abort (http://localhost:8080/glfw.js:5239:44)
    at assert (http://localhost:8080/glfw.js:434:5)
    at receiveInstantiatedSource (http://localhost:8080/glfw.js:1628:7)
abort @ glfw.js:5229
(anonymous) @ glfw.js:1637
Promise.catch (async)
instantiateArrayBuffer @ glfw.js:1635
(anonymous) @ glfw.js:1652
Promise.catch (async)
doNativeWasm @ glfw.js:1647
Module.asm @ glfw.js:1735
(anonymous) @ glfw.js:4813
glfw.html:1 Uncaught (in promise) abort("abort(\"Assertion failed: the 
Module object should not be replaced during async compilation - perhaps the 
order of HTML elements is wrong?\") at Error\n    at jsStackTrace 
(http://localhost:8080/glfw.js:1033:13)\n    at stackTrace 
(http://localhost:8080/glfw.js:1050:12)\n    at abort 
(http://localhost:8080/glfw.js:5239:44)\n    at assert 
(http://localhost:8080/glfw.js:434:5)\n    at receiveInstantiatedSource 
(http://localhost:8080/glfw.js:1628:7)") at Error
    at jsStackTrace (http://localhost:8080/glfw.js:1033:13)
    at stackTrace (http://localhost:8080/glfw.js:1050:12)
    at abort (http://localhost:8080/glfw.js:5239:44)
    at http://localhost:8080/glfw.js:1637:9


-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to