Live data from Hacker News

If you were involved in the OpenGL ES specification, you are an idiot

jwz.org

161–170 of 225 posts

Re: If you were involved in the OpenGL ES specification, you are an idiot

#161
post #157

Wow ... this guy is just an arrogant idiot ... You first need to understand that opengl specification are not made to be easy to use, but efficient. And the api design is highly constraint by the hardware. You also need to understand that opengl 1.3 is FCKING 11 YEARS OLD ! Back in the day you had immediate mode. You first call glBegin, then make one call to glVertex for each vertex and finally call glEnd. So if you…

Easy : there were no graphic card. All the 3D rendering was done by the cpu.

Err, what? SGI, who wrote the OpenGL spec, had rendering hardware before OpenGL existed...

Re: If you were involved in the OpenGL ES specification, you are an idiot

#162
post #159

I respect jwz, but this is very much a step backwards, and while I appreciate his complaint about breaking existing APIs, this would be for programs near 20 years old targeted at a different platform. OpenGL is a terrible, awful, crufty API, and the reason those methods were removed is that they are comically suboptimal. They do not reflect anything remotely like modern card capabilities, and their use directly cause…

OpenGL is a terrible, awful, crufty API, and the reason those methods were removed is that they are comically suboptimal. They do not reflect anything remotely like modern card capabilities But the guys who wrote it weren't idiots. They were in fact super smart engineers working at the cutting edge company of the day, SGI. And they made a philosophical call, which was that OpenGL should be an abstraction of geometry…

Thats not at all true. The original OpenGL API is very much a direct mapping of the original SGI graphics hardware. Most openGL calls on SGI are single cpu instructions feeding the data to the hardware, which fully implements the whole OpenGL state machine.

Its just that modern GPUs work in completely different ways, so this kind of API is useless for them.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#163

God what flamebait, how is this near the top of the front page? When your primary argument that the ES designers were idiots is lack of immediate mode, I'm sorry, you are the idiot. These are embedded systems with highly constrained resources and that immediate mode API is horrible for a lot of reasons: * Requires tons of driver calls. * Stupidly hard to optimize on the driver side when you have no idea just how many…

These "embedded systems with highly constrained resources" are machines with 512MB+ of memory and monster CPU/GPUs. It's perfectly OK to write code for them that you haven't bled over to optimize the hell out of.

And JWZ just showed you don't need "tons of driver calls" unless you mean simple function calls that don't cross the kernel boundary.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#164

Earlier quoted context omitted.

It's not something that can be done in 3 days. Fixed function on top of shaders is a PITA. If you want any kind of speed you've got to generate shaders on the fly based on which features you've turned on or off. Otherwise you create an uber shaders that's show as shit. glBegin, glEnd are shit APIs given how GPUs work now-a-days. Worse, things like flat shading require generating new geometry on the fly. Fixed functio…

Finally someone actually works in the cg industry replies. +1 to this. No one really uses fixed function stuff these days, everything is shaders and vertex and index buffers. There are no fixed function hardware units, everything in the graphics pipeline is programmable and done in shaders. Even using fixed function stuff on today's hardware forces the driver to compile a built in shader. In the interest of keeping d…

Old code doesn't just convert itself to using shaders and vertex and index buffers.

Also: old code isn't necessary un-useful code.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#165
post #161
post #157

Wow ... this guy is just an arrogant idiot ... You first need to understand that opengl specification are not made to be easy to use, but efficient. And the api design is highly constraint by the hardware. You also need to understand that opengl 1.3 is FCKING 11 YEARS OLD ! Back in the day you had immediate mode. You first call glBegin, then make one call to glVertex for each vertex and finally call glEnd. So if you…

Easy : there were no graphic card. All the 3D rendering was done by the cpu. Err, what? SGI, who wrote the OpenGL spec, had rendering hardware before OpenGL existed...

Yeah you're right, they were graphic cards, my bad, I made a shortcut. But at the time (1992), opengl implementations were mostly on the cpu (except for SGI graphic cards that were reserved to professionals). And the graphic card processing power was not enough to make the cpu a bottleneck.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#166

Earlier quoted context omitted.

Interesting. I hear what you are saying. To contradict everything I've said elsewhere on compatibility - I'm actually in favor of the 1.0/1.1 OpenGL ES standards and would have liked WebGL to offer 1.1. My self deceiving justification in this instance is that plenty of platforms that can touch the web are still running hardware only capable of fixed function (eg. Intel 945GM). Fixed function is easy to make safe, and…

Fixed function is no easier to make safe than shaders so that's a false assumption. OpenGL ES 1.1 on JavaScript would be a joke. Do you really think JavaScript is up to tens of thousands of glVertex glColor glNormal calls per model per frame? The rest of the graphics world left OpenGL 1.x long ago. OpenGL 4.0 has none of the fixed function stuff in it anymore either. Using fixed function features in 2012 is like usin…

OpenGL ES 1.1 != OpenGL 1.1

OpenGL ES 1.1 does not have support for immediate mode, thus no glBegin/glEnd and no glVertex etc. It's just VBO:s.

Do note that fixed function does not mean same as immediate mode (which is what the glVertex etc calls are all about).

Re: If you were involved in the OpenGL ES specification, you are an idiot

#167
post #150
post #104

Earlier quoted context omitted.

> God what flamebait, how is this near the top of the front page? Because the source is widely respected and has an amazing demonstrated grasp of what good programming involves.

Eh, not any more. JWZ is a has-been, who admittedly did good things back in the 90's, but who has lost touch with the industry when he became a hobby coder. This post is a clear demonstration of that - if he knew even a little bit what he was talking about, he wouldn't make the outrageous claims he does. But no, he just want to hang on to his toys he wrote 15 years ago and have them work with just a recompile on plat…

That's just absurd.

Its not absurd at all. He's got a massive collection of amazing GL-based screensavers that a LOT of people have learned graphics programming from, over the years. There are still contributions being made to this collection in 2012, and there have been consistent additions to the collection since the very early 90's. This is no toy collection.

Fact is a lot of great OpenGL code could run on the iPad today, if only the false ideology of cutting 'archaic things' out of the ES profiles wasn't getting in the way. There are plenty of opportunities for OpenGL apps from decades ago to be re-targetted to the new platforms, if only for this problem - and jwz is right to point it out.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#168
post #45

The thing that particularly bothers me about this post: > People defend this decision by saying that they "had" to do it, because the fixed function pipeline is terribly inefficient on modern GPUs or some such nonsense. These people don't know what they're talking about, because the contour of the API has absolutely fuck-all to do with what goes over the wire. As far as I can tell from what he's written, all he's don…

And what I've understood he's done is not to retransmit static geometry every single frame, but to use an array to send batches behind the scenes.

This is, the exposed API doesn't force any particular implementation.

And that makes a lot of sense.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#169
post #17

OpenGL ES is not designed to be OpenGL. It has a different set of constraints. The point is to prune back the API for small devices - NOT - to make make migration of legacy code simple. For sure it would be nice if it came with a client side library to emulate OpenGL to assist in migration where people dont care about foot print size or perf. JWZ is a very smart guy and I respect his opinion, but he is coming from a…

>It has a different set of constraints. The point is to prune back the API for small devices I came here to say something along these lines, but right now I'm limited on time so I don't have time to go into specific examples. In OpenGL, there might be 5 ways to do something. Three of them are very much suboptimal, one way worked but was incredibly kludgy to write, and one was performant and pretty clean. With OpenGL…

The point is to prune back the API for small devices

I don't disagree with the general sentiment that it was time to clean out the cruft in OpenGL, but I find this part of the argument to be a bit humorous. These "small, constrained devices" we're talking about are probably 10x faster than a goddamned Reality Engine.

I tend to agree that the API should have been renamed entirely once it was pared down this far, as 3Dfx did when they created Glide.

Re: If you were involved in the OpenGL ES specification, you are an idiot

#170
post #159

Earlier quoted context omitted.

OpenGL is a terrible, awful, crufty API, and the reason those methods were removed is that they are comically suboptimal. They do not reflect anything remotely like modern card capabilities But the guys who wrote it weren't idiots. They were in fact super smart engineers working at the cutting edge company of the day, SGI. And they made a philosophical call, which was that OpenGL should be an abstraction of geometry…

Thats not at all true. The original OpenGL API is very much a direct mapping of the original SGI graphics hardware. Most openGL calls on SGI are single cpu instructions feeding the data to the hardware, which fully implements the whole OpenGL state machine. Its just that modern GPUs work in completely different ways, so this kind of API is useless for them.

Put some info about yourself into your profile so that graphics nerd colleagues (me) can learn about your very interesting work experience!
Post reply on HN