Menu

New OpenGL renderer added

A new renderer has been added to Quesa, which aims to acheive better speed by taking advantage of OpenGL features such as vertex buffer objects.

Visible Differences from Interactive Renderer

* There is no distinction between the "both" and "flip" backfacing
styles. Both cases use normal OpenGL two-sided lighting.

* Geometries of dimension less than 2 (Point, Line, PolyLine,
Ellipse, NURBCurve) are unaffected by the direction of the light.

* Textures of pixel type kQ3PixelTypeARGB16 are treated differently.
With the default linear texture filtering, you will see a smooth
transition from transparent to opaque.

Performance Notes

* In order for a TriMesh to be on the "fast path" for the OpenGL
renderer,

* it must be a retained object
* it must have vertex normals
* it must not have color or texture with transparency
* it must not have per-face colors (unless per-vertex colors are also
present)
* it must not have per-face textures

* Per-face normals on TriMeshes are ignored.

* If a TriMesh falls off the fast path due to lack of vertex normals,
or due to having per-face color and not per-vertex color, then the
renderer will call Q3TriMesh_Optimize and cache the result. This
takes a little extra time when the object is first rendered, but
should be fast thereafter.

* You will get better performance with a few large TriMeshes than
with many small ones. The "MultiBox" test in the Geom Test sample
is a particularly bad case, having 4000 TriMeshes with 2 triangles
each.

* A fast-path TriMesh with more than 500 faces will be cached as a
vertex buffer object when the hardware supports it, and otherwise
as a display list.

* When a fast-path TriMesh has more than 500 faces, we compute a
triangle strip for it and cache the strip in an object property.

* This renderer gives much more of a performance boost when the video
card has actual VRAM rather than shared system memory.

Posted by James W. Walker 2007-02-11

Log in to post a comment.