Use Vertex Buffer Objects (VBO) to enhance performance with complex models
No CAD or DCC professional likes waiting for their system to update the screen. So a principal goal for any modern 3D rendering application is real-time rendering and interactive editing. One approach to achieve this level of performance, is to use sorting, culling or LOD to limit the number of polygons that need to be rendered. Another approach is to move raw geometry processing power from the CPU, to the parallel architecture of the GPU.
OpenGL offers several optimizations to help take advantage of the GPU. One key optimization is the Vertex Buffer Objects (VBOs) extension (core in OpenGL 3).
Vertex Buffer Objects are a way for the graphics card to store the geometry on the card and even update it without having to push the geometry back down the bus to the CPU (or use paged memory on the hard drive!) to calculate changes. This more efficient use of framebuffer memory reduces the instances the GPU is waiting for the CPU and and significantly accelerates the performance of things like large model rotations.
With CAD applications that implement VBO in their OpenGL graphics engine, such as CATIA V5 R18 or SolidWorks 2008, the more graphics memory (framebuffer) you have on your GPU, then the larger the models are that can be manipulated without taking a performance hit. For massive models, the combination of a fast GPU with a big framebuffer, advanced OpenGL drivers and software that supports OpenGL VBOs, enables a new level of assembly size to be edited interactively.
This video demo shows the performance advantages of using VBOs in CATIA V5 R18 when rotating a 5,000,000 polygons model of a Peugeot Car.
Each model was opened in two identical instances of CATIA (V5 R18) on an Intel Core 2 Extreme QX6800 Asus P5W64-WS Pro with 4 GB of system RAM running Windows XP32 using a FireGL V7600 (512 MB framebuffer) Workstation Graphics Accelerator.
As can be clearly seen in the video, using VBOs enables real-time performance.