Mesh:setVertexAttribute

Available since LÖVE 0.10.0
This function is not supported in earlier versions.

Sets the properties of a specific attribute within a vertex in the Mesh.

Meshes without a custom vertex format specified in love.graphics.newMesh have position as their first attribute, texture coordinates as their second attribute, and color as their third attribute.

Function

Synopsis

Mesh:setVertexAttribute( vertexindex, attributeindex, value1, value2, ... )

Arguments

number vertexindex
The index of the the vertex to be modified (one-based).
number attributeindex
The index of the attribute within the vertex to be modified (one-based).
number value1
The new value for the first component of the attribute.
number value2
The new value for the second component of the attribute.
number ...
Any additional vertex attribute components.

Returns

Nothing.

Notes

Attribute components which exist within the attribute but are not specified as arguments default to 0 for attributes with the float data type, and 1 for the byte data type.

Examples

Modify the colors of a standard mesh after it's created.

-- Standard mesh with position, texture coordinates, and color attributes.
mesh = love.graphics.newMesh {
    {0,   0,    0, 0,  1, 1, 1, 1}, -- first vertex positioned at (0, 0)
    {400, 0,    0, 0,  1, 1, 1, 1}, -- second vertex positioned at (400, 0)
    {200, 400,  0, 0,  1, 1, 1, 1}, -- third vertex positioned at (200, 400)
}

local time = 0

function love.update(dt)
    time = time + dt

    for i = 1, mesh:getVertexCount() do
        -- The 3rd vertex attribute for a standard mesh is its color.
        mesh:setVertexAttribute(i, 3, (time * 10) % 1, 1, 1)
    end
end

function love.draw()
    love.graphics.draw(mesh)
end

See Also

Other Languages