Difference between revisions of "War Drum OpenGL Native Data"

From GTAMods Wiki
Jump to navigation Jump to search
m
m (removed cute types)
Line 2: Line 2:
  
 
==Bin Mesh==
 
==Bin Mesh==
The [[Bin_Mesh_PLG_(RW_Section)|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.
+
The [[Bin_Mesh_PLG_(RW_Section)|Bin Mesh]]'s chunk format is almost the same as in non-instanced DFFs. The only difference is that the indices are uint16 (as used internally by RW) instead of uint32.
  
 
==Native Data==
 
==Native Data==
Line 8: Line 8:
 
The Native Data has no child Struct like on the other platforms and not platform information.
 
The Native Data has no child Struct like on the other platforms and not platform information.
  
  RwUInt32       number of attributes (numAttribs)
+
  uint32       number of attributes (numAttribs)
 
  #repeat for numAttribs (attribute description)
 
  #repeat for numAttribs (attribute description)
     RwUInt32   attribute index
+
     uint32   attribute index
     RwInt32   type (0 = GL_FLOAT, 1 = GL_BYTE, 2 = GL_UNSIGNED_BYTE, 3 = GL_SHORT, 4 = GL_UNSIGNED_SHORT)
+
     int32   type (0 = GL_FLOAT, 1 = GL_BYTE, 2 = GL_UNSIGNED_BYTE, 3 = GL_SHORT, 4 = GL_UNSIGNED_SHORT)
     RwBool    isNormalized
+
     bool32  isNormalized
     RwInt32   size
+
     int32   size
     RwUInt32   stride (same for all attributes)
+
     uint32   stride (same for all attributes)
     RwUInt32   offset
+
     uint32   offset
 
  #endrepeat
 
  #endrepeat
  RwUInt8       data[stride*geometry->numVertices]
+
  uint8       data[stride*geometry->numVertices]
  
 
Apart from the type, attribute descriptions can be directly passed to [https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttribPointer.xml glVertexAttribPointer].
 
Apart from the type, attribute descriptions can be directly passed to [https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttribPointer.xml glVertexAttribPointer].
Line 37: Line 37:
 
The Skin chunk contains a Struct chunk with the following data:
 
The Skin chunk contains a Struct chunk with the following data:
  
  RwUInt32  platform ID (2 for OpenGL)
+
  uint32  platform ID (2 for OpenGL)
  RwUInt32  number of Bones (numBones)
+
  uint32  number of Bones (numBones)
  RwReal    matrices[numBones][16]
+
  float32  matrices[numBones][16]
  
 
== See also ==
 
== See also ==

Revision as of 10:56, 13 August 2015

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 uint16 (as used internally by RW) instead of uint32.

Native Data

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

uint32       number of attributes (numAttribs)
#repeat for numAttribs (attribute description)
    uint32   attribute index
    int32    type (0 = GL_FLOAT, 1 = GL_BYTE, 2 = GL_UNSIGNED_BYTE, 3 = GL_SHORT, 4 = GL_UNSIGNED_SHORT)
    bool32   isNormalized
    int32    size
    uint32   stride (same for all attributes)
    uint32   offset
#endrepeat
uint8        data[stride*geometry->numVertices]

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

Indices

Each vertex attribute in an OpenGL shader has an index. The indices used by the 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)

Skin

The Skin chunk contains a Struct chunk with the following data:

uint32   platform ID (2 for OpenGL)
uint32   number of Bones (numBones)
float32  matrices[numBones][16]

See also