|
From: James W. <ja...@fr...> - 2007-02-09 02:37:46
|
I've committed the code for my new renderer. I updated the projects for
CodeWarrior and Xcode/Carbon, leaving Xcode/Cocoa, Visual Studio, and
the Unix makefile for others to handle.
Question: Should the triangle-strip computing function be exposed as a
public API, and if so, which header should it go in?
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.
* 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.
--
James W. Walker, Innoventive Software LLC
<http://www.frameforge3d.com/>
|