War Drum OpenGL Native Data

From GTAMods Wiki
Revision as of 09:44, 13 August 2015 by The hero (talk | contribs) (Created page with "This page describes the format of pre-instanced DFFs as used by the mobile GTA games. =Bin Mesh= The Bin Mesh's chunk format is almost the same...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This page describes the format of pre-instanced DFFs as used by the mobile GTA games.

Bin Mesh

The Bin Mesh's chunk format is almost the same as in non-instanced DFFs. The only difference is that the indices are RwUInt16 (as used internally by RW) instead of RwUInt32.

Native Data

The Native Data has no child Struct like on the other platforms and not platform information.

4b - RwUInt32   - number of attributes

Next come the attribute descriptions:

4b - RwUInt32   - attribute index
4b - RwInt32    - type (0 = GL_FLOAT, 1 = GL_BYTE, 2 = GL_UNSIGNED_BYTE, 3 = GL_SHORT, 4 = GL_UNSIGNED_SHORT)
4b - RwBool     - isNormalized
4b - RwInt32    - size
4b - RwUInt32   - stride
4b - RwUInt32   - offset

Apart from the type, these can be directly passed to glVertexAttribPointer.

Next is the vertex data as described by the attribute descriptions. Since the size of a vertex is given by the stride of the attribute descriptions, the size of the vertex data is stride*geometry->numVertices.

Indices

Each vertex attribute in an OpenGL shader has an index. The indices used by hte mobile GTAs are the following:

0 - vertex position
1 - tex coord 0
2 - normal
3 - color
4 - vertex weights (only used with skinned geometry)
5 - bone indices (only used with skinned geometry)
6 - extra color (only used with SA's extra color plugin)