NURBS-based real-time 3D engine

I’m thinking about a project - a NURBS-based OpenGL real-time engine. I found some advantages of NURBS - such as low requirements for memory to store an object or rather easy applying of LoDs to such an object.
The main advantage of NURBS, as for me, is that NURBS surface defines the whole object, and I can divide it into triangles as I wish. But there is a disadvantage - less speed of rendering in comparison with polygonal models.
Please, if you can tell anything about advantages/disadvantages of using NURBS in real-time graphics, I want to hear your opinion on this topic.

I am not sure, but AFAIK NURBS arent supported in hardware, at all.

So, that should be a big enough disadvantage :frowning:


There should be some gl functions for evaluating Bernstein polynomial curves and Bezier curves. And there are also GLU functions for NURBS I believe (watch out, GLU functions might not be very fast).
If you use these I don’t think you can use a vertex program, or at least such a program would be very difficult to control.
It might also be hard for you to specify normals for lighting calculations and other effects.

Another way to go is to do the evaluation yourself. So you have a NURBS class who has a draw function that plot a number of vertices depending on the required resolution. Some real-time engines employ this technique, but as far as I know most rely on old fashioned meshes. The advantage of the mesh is that you can generate any model in a program like 3DS Max, and have it imported with normals, depth maps, normal maps and other useful information. The curves on the other hand might be faster, but they are very hard to light properly and to create special effects on.