Thanks for the tip! I should probably have mentioned I'm using SDL, although I think it's basically the same problem(s)...
Anyway, I've got dynamic canvas resizing working now, via a combination of Module.setCanvasSize( w,h ) and polling for canvas size changes as you suggested. However mouse coordinates are now all 'offset' by a significant amount after a canvas resize. This also happens with the standard html (not my tweaked version) after you go into fullscreen mode. Any known fixes for this? On Mon, Dec 7, 2015 at 3:36 AM, Floh <[email protected]> wrote: > I think what happens is that the canvas and attached WebGL framebuffer is > properly resized, but the GL context's viewport state (or rather your > engine) isn't aware of the resize (that's why it is rendering to the > lower-left-corner, since GL's origin is bottom left). > > Canvas resize (apart from going fullscreen) is currently also not handled > in my engine, but I played around with it a bit and got it to work this way: > > - once per frame, get the current canvas size calling > emscripten_get_canvas_size() > - if the canvas size has changed since last frame, do whatever needs to be > done in your engine (at the simplest, change the calls to glViewport to use > the new size) > > With this I could simply do a 'canvas.width = x' in the browser Javascript > console, and the rendering looked correkt (without the fix, I also got the > 'lower-left-corner rendering'). > > It might also be possible to get a callback invoked from emscripten > whenever the canvas size changes. There is a resize callback > 'emscripten_set_resize_callback' in emscripten/html5.h which might do the > right thing, although this might be called for the whole DOM, not the > canvas, I'm not sure (see: > https://w3c.github.io/uievents/#event-type-resize). > > Cheers, > -Floh. > > > Am Sonntag, 6. Dezember 2015 04:25:33 UTC+1 schrieb Mark Sibly: >> >> Hi, >> >> Is there any trick to resizing the emscripten canvas from 'outside' the >> emscripten app, ie: from some JS in the main html file? >> >> I have this working fine in a plain JS app, but not in an emscripten app >> - the canvas seems to 'reset' to it's initial size, and repositions itself >> in the lower left corner. >> >> Do I need to somehow notify emscripten that the canvas has changed size, >> perhaps via a Module.blah call? >> >> I'm basically trying to add a 'splitter' between the canvas and the >> console, but ultimately I'd also like to have the canvas 'full window', so >> it resizes when the browser window does. >> >> Bye! >> Mark >> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "emscripten-discuss" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/emscripten-discuss/NONijDAFuTE/unsubscribe > . > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- 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.
