First CPP version plus little bug fix to C version

Bug fix to C version to use correct stride and structure offset in calls to glVertexPointer and glNormalPointer.

First CPP version - probably still further work that can be done on it.