squeak graphic: technical introduction

Andreas Raab andreas.raab at gmx.de
Mon Jul 28 21:46:46 UTC 2003


> > Which book (or books) are you thinking of in particular?

"Computer Graphics: Principles and Practice" (Fooley et. al) is still the
ultimate reference.

> Good question. On the other hand I'm not looking for an 
> introduction to OpenGL or hidden surface algorithms. I would
> like to now what's involved on the squeak side to say -
> render a mesh to make it visible in a scene. What 
> kind of plugins are envolved, etc.

Well, assuming that you know what a rendering pipeline typically looks like,
it's really straight out of the books:

Pipeline part		Class				Plugin
Transformation		B3DVertexTransformer*	B3DTransformerPlugin
Shading			B3DVertexShader*		B3DShaderPlugin
Clipping			B3DVertexClipper*
B3DClipperPlugin
Rasterization		B3DVertexRasterizer*	B3DRasterizerPlugin

(the "*" in the above means including subclasses as the plugin supported
versions are typically subclasses of the more generic ones, e.g.,
B3DPrimitiveTransformer, B3DPrimitiveShader, B3DPrimitiveClipper and
B3DPrimitiveRasterizer). All of these are found in the category
'Balloon3D-Kernel-Engine'.

The front-end giving you the API to all of the parts is called
B3DRenderEngine (what an innovative name, eh?! ;-) and you mostly deal with
it instead of the individual parts of the engine. Most of the other classes
involved simply model certain objects you find in 3D environments:
* Geometry (Balloon3D-Kernel-Meshes)
* Material and Lights (Balloon3D-Kernel-Lights)
* Vectors and Matrices (Balloon3D-Kernel-Vectors)
* Viewing objects (Balloon3D-Kernel-Viewing)
...

That's basically it. The only three things I haven't mentioned are:
* 'Balloon3D-Kernel-Objects' - this contains some sample objects
* Vertex buffers - those are captured by B3DVertexBuffer, B3DPrimitiveVertex
and B3DVertexBufferPlugin
* Acceleration - the accelerator cuts off the entire nicely defined backend
classes above in order to be able to go as directly as possible to the
hardware (and it uses some nasty tricks for being able to play well with
Morphic)

That's it. Not much to it, and pretty much right out of the box ... if you
know how to construct a viewing matrix, how a lighting model works, and how
to apply texture mapping ;-) If not, definitely read the graphics bible.

Cheers,
  - Andreas



More information about the Squeak-dev mailing list