Not sure if it's solved but I want to make a comment about record alignment. In the engine I wrote and used in the 2nd. PGD Challenge I didn't use records to store data that is used with OpenGL; I use vectors (ARRAY) instead. For example, to store xyz points I used something like:
Code:
CONST
  COOR_X = 0;
  COOR_Y = 1;
  COOR_Z = 2;
TYPE
  Vector3D = ARRAY [0..2] OF glFloat;
To access to each axis I use the CONST (i.e. Point[COOR_X], etc). This way I can use the "v" functions without alignment problems.