Hi Frank!,
that is very interesting question. The reason is purely practical - current accelerators work with polygon representation of the surfaces. More smooth the surface is, more polygons are produced and the speed goes down and GPU memory higher.
Todays mainstream GPUs don't have that big problem with polycount, but low end such as Intel graphics cards are very sensitive to high polycounts. I remember last time I checked performance characteristics of Intel card (1,5 year ago), even using very optimized approaches such as Vertex Arrays, Vertex Buffer Objects or Display Lists, the limit was slightly over 30 000 polygons at real time speed (textured, lighted). In the same time, comparable GPUs from ATi or NVIDIA can render 3 000 000 polygons at least.
So there is still need to optimize, if you need to ship to all hardware platforms.
Many CSG programs have nicely rounded shapes, but it comes at the price - you might notice for example in SolidWorks that:
- screen is not refreshed continuously, only when needed
- during the rotation and other movements, the decal of objects goes down, sometimes into extreme where things like complex wheel model for example get suddenly replaced by box during the rotation, to keep the experience real time
- the performance is not exactly realtime for models composed from multiple objects
In TBGL, you can control the level of detail for objects using TBGL_SetPrimitiveQuality, so with really high detail level, the shapes become round.
I attach simple example demonstrating change of primitive quality during manipulation.
Petr
P.S. Currently, there is very exciting new technology with brand new cards, where tesselation (subdivision of rough surfaces to look smooth) is accelerated in hardware. But as it is implemented only on last generation of hardware, TBGL does not contain support for it yet. But to optimize performance, there are some precalculations done when changing primitive quality setting, but the render then goes at full speed.
Bookmarks