Static methods

@:value({ normalize : false })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

@:value(null)vertexBuffer:VertexBuffer3D = null

@:value(null)uvBuffer:VertexBuffer3D = null

@:value(null)indexBuffer:IndexBuffer3D = null

@:value(null)normalBuffer:VertexBuffer3D = null

@:value(null)tangentBuffer:VertexBuffer3D = null

@:value(null)colorBuffer:VertexBuffer3D = null

@:value(null)boneWeights:VertexBuffer3D = null

@:value(null)boneIndices:VertexBuffer3D = null

@:value(0x88E4)bufferUsage:Int = 0x88E4

The buffer usage pattern for optimization purposes.

Note: This will be applied on the next call to setArrays().

@:value(3)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.

@:value(null)material:FoxMaterial = null

@:value(null)assetsKey:String = null

@:value(null)bounds:BoundingBox = null

@:value(null)context:Context3D = null

@:value(false)__isCopy:Bool = false

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

setIndexBuffer(data:Array<Int>):Void

Same as setBuffer() but exclusive to the Index buffer

setIndexBufferRaw(data:UInt16Array):Void

@:value({ offset : 0 })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 data

@:value({ offset : 0 })updateIndexBuffer(data:Array<Int>, offset:Int = 0):Void

Same as updateBuffer() but exclusive to the Index buffer

@:value({ offset : 0 })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.

getBufferByType(type:FoxMeshBufferType):VertexBuffer3D

Returns a vertex buffer of this mesh.

Parameters:

type

The buffer type. See FoxMeshBufferType

calculateBounds(vertices:Dynamic):BoundingBox

copy():FoxMesh

Copies this mesh object, does not create new data on GPU. Use this to use different materials or mix different buffers.

Warning! destroying this copy won't free memory on the GPU unless the original is destroyed!

destroy():Void