Back to Blog home

Qt Quick WebGL Streaming

Published on Wednesday February 22, 2017 by Jesús Fernández in Dev Loop Qt Quick 2 WebGL | Comments

WebGL Streaming is optimized for Qt Quick and allows you to run remote Qt Quick applications in a browser.

I'm working on a platform plugin to run remote applications in your browser, using OpenGL command streaming.

When the remote application runs using this new platform plugin, the application will create a lightweight web server. When a user connects to the application, a web socket connection is opened between the server and the client, using QWebSocketServer.
The application running on a remote computer will serialize all GL calls to binary data and sends it using the web socket connection.

The local browser will send the event (mouse, touch or keyboard) to the remote application, so user interaction is allowed. Even multi-touch support! (up to 6 fingers):

https://www.youtube.com/watch?v=hK5hsEsXpxk

And some Qt Quick demos running in the browser:

The "calqlatr" example:

https://www.youtube.com/watch?v=CbSK6ihMUaA

"clocks" example:

https://youtu.be/e4JpjqqhDts

"emitters" (particles) example:

https://youtu.be/K5QX57S2gnQ

"samegame" example:

https://youtu.be/x0Xh7MNjueU

Desktop browsers are also supported:
webgldemo

It allows multiple connections to the same application.

screenshot_20170222_183836

New windows are shown in a different canvas in the browser.screenshot_20170222_184419

To improve the performance, I'm also working to support web sockets compression. To be able to use the permessage-deflate extension. It's actually working but needs more testing.

This feature is going to be introduced in Qt 5.10 as appears in the 2017 roadmap.

Subscribe to Our Blog

Stay up to date with the latest marketing, sales and service tips and news.

We are updating our comment system and you could face some issues. Please write to us at feedback@qt.io to report issues/bugs.