Wire3D (Wii Independent Rendering Engine 3D) is an open source, object oriented, multiplatform 3D engine written in C++, supporting homebrew Wii and Windows (DirectX). It provides a framework to developers for writing platform agnostic 3D applications (including physics using the Bullet Physics library) that run on Wii and Windows out of the box.


Key features
Platform independent renderer
minimizes render state, buffer, light and texture changes
creates displaylists (Wii) from static meshes on the fly
supports 16/32 bit RGB(A) textures (incl. generation of mipmaps using a Gauss filter)
once render objects are bound, no further memory allocations occur at runtime
supports 3 ways of rendering
visible sets of objects from the scene graph
individual objects
low-level rendering by manually controlling render states, buffers, etc.
Scene graph
various nodes (discrete level of detail, billboard, light, switch, ...)
controller system
hierarchical render state, light and effect handling
hierarchical culler
sequential set of visible objects
sorted (by transparency, render state, material and depth) set of visible objects
Math supporting doubles and floats
vector3, matrix34 (Wii specific optimizations)
vector2, vector4, matrix2, matrix3, matrix4, quaternion (generic C++ code)
Object system
custom run-time type information (rtti)
smart pointers (reference linking)
Custom template containers
array, hash set, hash table, list, sorted map, queue, stack

http://wire3d.googlecode.com/files/Wire3D_1.0.zip