Status          : suggestion
Implementations : int CGeometry::readBOG( FILE * bog );
                  int CGeometry::writeBOG( FILE * bog );
This is a binary representation of 3D mesh object. This file can be printed in ascii using the geo file format
| bogFile | = bogHead + Geometry list | 
| bogHead | = File identification + File version + Number of geometries | 
| File identification | = * String that identify this file format "BOG" * | 
| File version | = * file version number * | 
| Geometry liste | = {Geometry} | 
| Geometry | = Geometry head + Vertex list + Normal list + TexCoord list + Polygon list | 
| Geometry head | = Geometry id + Number of vertices + Number of normals + Number of TexCoords + Number of polygons | 
| Vertex list | = {Vertex} | 
| Vertex | = x-coord + y-coord + z-coord | 
| Normal list | = {Normal} | 
| Normal | = x-coord + y-coord + z-coord | 
| TexCoord list | = {TexCoord} | 
| TexCoord | = u-coord + v-coord | 
| Polygon list | = {Polygon} | 
| Polygon | = PolyHead + Vertex indexes + Normal indexes + TexCood indexes | 
| PolyHead | = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes | 
| Type | = [ Polygon | Triangles | Quads | Quad strip | Triangle strip | Triangle fan ] | 
| Material id | = * A string that identify the material. * | 
| Vertex indexes | = {index} | 
| Normal indexes | = {index} | 
| TexCoord indexes | = {index} | 
| Index | = * Pointer to element in a table. * | 
The bog file is a binary format but in this example ascii text is used to demonstrate the file format.
BOG 1 1 # File identification + File version + Number of geometries 1 8 6 4 6 # Geometry id + Number of vertices + Number of normals + Number of texCoords + Number of polygons -1.000000 -1.000000 1.000000 # Vertex 0 = x-coord + y-coord + z-coord 1.000000 -1.000000 1.000000 # Vertex 1 = x-coord + y-coord + z-coord 1.000000 1.000000 1.000000 # Vertex 2 = x-coord + y-coord + z-coord -1.000000 1.000000 1.000000 # Vertex 3 = x-coord + y-coord + z-coord -1.000000 -1.000000 -1.000000 # Vertex 4 = x-coord + y-coord + z-coord 1.000000 -1.000000 -1.000000 # Vertex 5 = x-coord + y-coord + z-coord 1.000000 1.000000 -1.000000 # Vertex 6 = x-coord + y-coord + z-coord -1.000000 1.000000 -1.000000 # Vertex 7 = x-coord + y-coord + z-coord 1.000000 0.000000 0.000000 # Normal 0 = x-coord + y-coord + z-coord 0.000000 1.000000 0.000000 # Normal 1 = x-coord + y-coord + z-coord 0.000000 0.000000 1.000000 # Normal 2 = x-coord + y-coord + z-coord -1.000000 0.000000 0.000000 # Normal 3 = x-coord + y-coord + z-coord 0.000000 -1.000000 0.000000 # Normal 4 = x-coord + y-coord + z-coord 0.000000 0.000000 -1.000000 # Normal 5 = x-coord + y-coord + z-coord 0.000000 0.000000 # TexCoord 0 = u-coord + v-coord 1.000000 0.000000 # TexCoord 1 = u-coord + v-coord 1.000000 1.000000 # TexCoord 2 = u-coord + v-coord 0.000000 1.000000 # TexCoord 3 = u-coord + v-coord 2 0 4 1 4 # Polygon 0 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 1 5 6 2 # Vertex indexes 0 # Normal indexes 0 1 2 3 # TexCoord indexes 2 1 4 1 4 # Polygon 1 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 2 6 7 3 # Vertex indexes 1 # Normal indexes 0 1 2 3 # TexCoord indexes 2 2 4 1 4 # Polygon 2 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 0 1 2 3 # Vertex indexes 2 # Normal indexes 0 1 2 3 # TexCoord indexes 2 3 4 1 4 # Polygon 3 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 3 7 4 0 # Vertex indexes 3 # Normal indexes 0 1 2 3 # TexCoord indexes 2 4 4 1 4 # Polygon 4 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 0 4 5 1 # Vertex indexes 4 # Normal indexes 0 1 2 3 # TexCoord indexes 2 5 4 1 4 # Polygon 5 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 4 7 6 5 # Vertex indexes 5 # Normal indexes 0 1 2 3 # TexCoord indexes