John Tsiombikas firstname.lastname@example.org
21 June 2011
About WebGL itself now, I'm really disappointed they chose to base it on OpenGL ES 2.0, which is the bastard child of a slashed down OpenGL subset initially spec'ed for fixed point embedded devices, and Khronos’ OpenGL >= 3 d3d10-buttlicking madness. I understand why they chose that, because they intend to have WebGL easily implementable on mobile phones and tablets, but I'm still disappointed.
For those of you not well versed in the differences between the various OpenGL versions that suddenly crept up when Khronos group took control of OpenGL and apparently surrendered it over to inmates of the nearest insane asylum, I'll give you a short overview of what sucks in OpenGL >= 3.x, OpenGL ES 2.0, and WebGL:
glBegin). Again, yes immediate mode is slow if you use it to draw multimillion vertex meshes, but having to make a vertex buffer for a quad representing a button in a GUI or a simple overlay, is insanity.
So anyway, while I was playing around with it these past few days, I had to bring back a little bit of sanity to WebGL. For that reason I wrote SaneGL, a small piece of code that implements immediate mode drawing, and the OpenGL matrix stack on top of WebGL. I bundled that along with a small matrix math library and some helper functions for WebGL programs in a project called webgl-tools, which you can find in my mercurial repository: http://nuclear.mutantstargoat.com/hg/webgl-tools.
Oh by the way, if you're one of those misguided sods that keep using windows, and you try to run any webgl apps right now you will probably be disappointed. In an unprecedented inspiration of pure stupidity, both firefox4 and chrome chose to implement WebGL over Direct3D by default on windows, using a project called ANGLE. The reason for that, they say, is that most graphics card vendors provide buggy OpenGL implementations on windows, so apparently it makes sense to write an even more buggy OpenGL->D3D translator and use that.
Initially I thought that ANGLE fails to translate huge shaders such as the one
on my fractal raytracer, but in fact it seems to fail on pretty much
everything, complex or trivial. The only way for windows users to use WebGL at
the moment until mozilla and google comes to their senses and make ANGLE a
fallback for known buggy OpenGL implementations instead of the default choice,
is to go and force the browsers to use OpenGL instead. On firefox you can do
that by setting the
about:config variable "
webgl.prefer-native-gl" to true,
while chrome requires the command-line argument:
On GNU/Linux, as long as you have an nvidia card everything should be peachy
from the get-go. Other cards are apparently blacklisted by firefox, so you'll
have to set
webgl.force-enable to true, and pray to Odin.
This was initially posted in my old wordpress blog. Visit the original version to see any comments.
Discuss this post
Back to my blog