'3D scene rendering class
called "Render" in vbscript, and VB_Render in our API

'simple Rasterizer that supports rendering of geometry instances of OBJ files created in a 3D program, such as Maya, Blender, Lightwave, etc.
'it is very easy to use.
'Geometry should have vertice texture coordinates (UVs), and consist of triangles only.
'we create a simple projection coordinates if no texture coordinates exist in the file.
'The idea of the scene render class is that we load geometry, and paint instances of that geometry onto the Howler canvass.
'this class does not keep track of any state information like position, scale or rotation.  You tell it where to paint instances, and you can keep track of that information any way you want.
'below are the various members of this class
'LoadGeometry
'BegenRender/EndRender
'RenderInstance
'Camera
'Light

The workflow consists of loading geometry, then calling BeginRender, then rendering instances of the loaded geometry, then EndRender, and refreshing the screen so the user can see it.  You can place the camera.  There is only one camera.  You can also add lights.  There are more than one lights.  Fog can also be set.

Reference:

Public Sub
Dispose_Goemetry()

Public Sub
Dispose_Drawing()

Public Function
LoadGeometry(ByVal FileName As String) As Long
'returns the object global index
'returns -1 if fail

Public Sub
BeginRender(Optional ByVal hdc As Long)
'setup vbdrawing class to render.

Public Sub
EndRender()

Public Sub
RenderInstance(ByVal index,   ByVal x As Single, ByVal y As Single, ByVal z As Single,    ByVal sx As Single, ByVal sy As Single, ByVal sz As Single,    ByVal rx As Single, ByVal ry As Single, ByVal rz As Single)
    '0 rendered
    '1 wireframe

'place the camera
Public Sub
Camera(ByVal x As Single, ByVal y As Single, ByVal z As Single,  ByVal rx As Single, ByVal ry As Single, ByVal rz As Single, ByVal zoom As Single)

'place a new instance of a light.
Public Sub
Light(ByVal r As Single, ByVal g As Single, ByVal b As Single, ByVal intensity As Single, ByVal x As Single, ByVal y As Single, ByVal z As Single)
'return index of light

public sub
fog(ByVal r As Single, g As Single, b As Single, ByVal level As Single)