OpenGL 3 and tessellation

I’m in the process of updating some OpenGL 2 code to use OpenGL 3.2 Core Profile. (I can’t go all the way to 4.0 due to macOS support.) I’m wondering what to do about gluNewTess and friends, which apparently have gone away. Tessellation shaders, whatever they are, are not guaranteed to exist until OpenGL 4.0. Did they really remove tessellation without having any replacement ready? That seems almost unbelievable.

OpenGL 4+ tessellation shaders are unrelated to the GLU tessellation functions.

The GLU tessellation functions can still be used with 3+ core profile, although the callbacks are designed around glBegin/glEnd, so it’s more effort to use them with glDrawElements(). The other GLU features (i.e. NURBS and quadrics) call deprecated OpenGL functions and are incompatible with the core profile.

Why is that unbelievable? Those functions were CPU-based tessellation. The whole point of removing functionality from OpenGL was to get rid of stuff that you could do yourself, to make core OpenGL be a proper hardware abstraction. If you could do it just as effectively as the OpenGL implementation, or if the functionality didn’t represent something that hardware was actually doing, then it got thrown out.

The OpenGL 4.0 tessellation feature is hardware-based tessellation, not stuff you could do yourself.

Also, pretty much nobody interested in performance used the gluTess functionality. So getting rid of something that was not widely used wasn’t really hurting people.

Lastly, glu is not really part of OpenGL at all; it’s part of the GLU library, which is an ancillary system beside OpenGL. And since gluTess stuff works based on callbacks, there is nothing preventing you from still using it by providing callbacks that pipe the data into memory that gets uploaded to a buffer object.

1 Like

if there is some standard cross-platform library (hopefully open source) that does the same thing at least as well, I’d be happy to use that. I just don’t know where to find such a thing.

I haven’t been using it on a real-time basis, but to convert a “conceptual” representation of a polygon into a triangular mesh that is then cached.

Thanks, that’s a relief.