[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnu3dkit-dev] New core API
From: |
Philippe C . D . Robert |
Subject: |
[Gnu3dkit-dev] New core API |
Date: |
Mon, 23 Dec 2002 19:18:40 +0100 |
Hi,
to give you an idea how the new, simplified core API will/could look
like I have listed most of the exposed interface classes and protocols
w/ a short description (internal classes and backend stuff is not
listed here):
- Classes:
o G3DContextManager
Manages rendering contexts
o G3DContext
A rendering context, uses a backend renderer context internally
o G3DCamera
The camera controller, uses a NSView to draw
o G3DFrustum
The frustum used by a camera object.
o G3DRotator
A rotator/trackball controller
o G3DApplication
The application singleton used to setup a GNU 3DKit application, ie.
to
specify the threading model and renderer backend
o G3DGraphNode
o G3DGroup
o G3DShape
o G3DLight
The simple scene graph. We get rid of a designated root node in the
new
design. Of course this can be extended in a utility lib or by 3rd
party
developers.
A further idea is to have sth like a G3DPlugin which would allow the
incorporation of other structural scene data types.
o G3DShader
Shaders describe the appearance of a shape. The use of a standard
shading
languages would be very interesting here.
o G3DGeometry
o G3DImplicitSurface
o G3DQuadric
o G3DSuperQuadric
o G3DPatch
o G3DPatchMesh
o G3DPolygon
o ...
Geometry data is used by shapes, different types will be supported by
default.
o G3DRenderAction
A render action renders a 3DKit scene taking in account the initially
specified threading model. This allows us to separate rendering from
the scene
representation.
o G3DCopyAction
A copy action deep copies a scene graph portion to be reused
elsewhere.
o G3DCompileAction
A compile action optimises and compiles a scene graph.
- Protocols:
o G3DAction
o G3DRenderer
o G3DGfxContext
I tried to be closer to the original 3DKit and its thin, flexible API
but still I did incorporate some missing stuff. I also believe we
should use pure C for maths functionality, thus I dropped the
G3DTransform class for example.
How does that sounds to you? Of course this is only a rough overview,
but I try to come up with a proto as soon as possible, so that we can
start playing with it.
-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip
- [Gnu3dkit-dev] New core API,
Philippe C . D . Robert <=