Spec-Zone.ru › LÖVE

Mesh:setVertexMap

Доступно начиная с LÖVE 0.9.0
Эта функция не поддерживается в более ранних версиях.

Устанавливает карту вершин для сетки. Карта вершин описывает порядок, в котором вершины используются при отрисовке сетки. Вершины, карта вершин и режим отрисовки сетки работают вместе, чтобы определить, что именно отображается на экране.

Карта вершин позволяет переупорядочивать или повторно использовать вершины при отрисовке без изменения фактических параметров вершин или дублирования вершин. Это особенно полезно в сочетании с различными режимами отрисовки сеток.

Функция

Синтаксис

Mesh:setVertexMap( map )

Аргументы

table map
Таблица, содержащая список индексов вершин, которые следует использовать при отрисовке. Значения должны быть в диапазоне от [1, Mesh:getVertexCount()].

Возвращаемое значение

Ничего.

Функция

Синтаксис

Mesh:setVertexMap( vi1, vi2, vi3, ... )

Аргументы

number vi1
Индекс первой вершины, которую следует использовать при отрисовке. Должен быть в диапазоне от [1, Mesh:getVertexCount()].
number vi2
Индекс второй вершины, которую следует использовать при отрисовке.
number vi3
Индекс третьей вершины, которую следует использовать при отрисовке.

Возвращаемое значение

Ничего.

Функция

Доступно начиная с LÖVE 11.0
Этот вариант не поддерживается в более ранних версиях.

Синтаксис

Mesh:setVertexMap( data, datatype )

Аргументы

Data data
Массив индексов вершин, которые следует использовать при отрисовке. Значения должны быть в диапазоне от [0, Mesh:getVertexCount()-1]
IndexDataType datatype
Тип данных массива индексов вершин выше.

Возвращаемое значение

Ничего.

Примеры

Используйте карту вершин, чтобы исправить визуальную ошибку без копирования/вставки вершин.

function love.load()
    image = love.graphics.newImage("pig.png")
    local w,h = image:getDimensions()
 
    -- We want to make a Mesh with 1 vertex in the middle of the image, and 4 at the corners.
    local vertices = {
        {w/2, h/2,   0.5, 0.5,   1, 0, 0}, -- Center vertex, with a red tint.
        {0,   0,     0,   0,     1, 1, 1}, -- Top left.
        {w,   0,     1,   0,     1, 1, 1}, -- Top right.
        {w,   h,     1,   1,     1, 1, 1}, -- Bottom right.
        {0,   h,     0,   1,     1, 1, 1}, -- Bottom left.
    }
 
    -- But there's a problem! The drawn mesh will have a big triangle missing on its left side.
    -- This is because, in the default mesh draw mode ("fan"), the vertices don't "loop": the top left vertex (#2) is unconnected to the bottom left one (#5).
    mesh = love.graphics.newMesh(vertices)
    mesh:setTexture(image)
 
    -- We could copy/paste the second vertex onto the end of the table of vertices.
    -- But instead we can just change the vertex map!
    mesh:setVertexMap(1, 2, 3, 4, 5, 2)
end
 
function love.draw()
    love.graphics.draw(mesh, 0, 0)
end

См. также

  • Сетка
  • Mesh:getVertexMap
  • Режим отрисовки сеток

© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/Mesh:setVertexMap

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API