Static methods
staticcomputeTangents(vertices:Array<Float>, uvtData:Array<Float>, normals:Array<Float>, indices:Array<Int>, normalize:Bool = false):Array<Float>
Calculates tangents for a set of mesh data.
Tangents are used along normals for accurate lighting effects using normal maps.
Note: The output returns a 4-component array. This is XYZ = Tangent and W = Binormal handedness.
This method is based on a simplified version of the MikkTSpace algorithm from This StackOverflow Answer
Constructor
Variables
bufferUsage:Int = 0x88E4
The buffer usage pattern for optimization purposes.
Note: This will be applied on the next call to setArrays().
vertexPerFace:Int = 3
By default, this mesh will use 3 vertices per face (a triangle), but you can change it to 4 (quads) or 2 (lines).
This will affect how the mesh is processed when drawing.
Note: To apply it correctly, call setArrays() directly afterwards.
Note 2: This currently needs to be implemented.
Methods
setBuffer(type:FoxMeshBufferType, data:Array<Float>):Void
Writes buffer data on the GPU
Parameters:
type | The buffer to write to |
|---|---|
data | The data array |
setBufferRaw(type:FoxMeshBufferType, data:ArrayBufferView):Void
Writes buffer data on the GPU using an existing ArrayBufferView.
This method runs faster than setBuffer
updateBuffer(type:FoxMeshBufferType, data:Array<Float>, offset:Int = 0):Void
Updates buffer data on the GPU
Use this to set portions of it or are updating data constantly.
Tip: Make sure the buffer is set to GL.DYNAMIC_DRAW on its usage.
Parameters:
type | The buffer to update |
|---|---|
data | The data array |
offset | The index of the buffer where to start writing |
updateIndexBuffer(data:Array<Int>, offset:Int = 0):Void
Same as updateBuffer() but exclusive to the Index buffer
updateBufferRaw(type:FoxMeshBufferType, data:ArrayBufferView, offset:Int = 0):Void
Same as updateBuffer() and updateIndexBuffer(), but there's no data copying to a typed array,
instead, you provide it.
This method is faster than the other ones, but needs more setup.
setArrays(?vertices:Array<Float>, ?uvtData:Array<Float>, ?indices:Array<Int>, ?material_:FoxMaterial, ?normals:Array<Float>, ?colors:Array<Float>, ?weights:Array<Float>, ?influences:Array<Int>):Void
Creates buffers and uploads data to the GPU.