Mesh:setVertexMap (日本語)

LÖVE 0.9.0 から使用可能
この関数は以前のバージョンでは非対応です。

Mesh に対して頂点マップを設定します。頂点マップは Mesh の描画時における頂点の使用順序について記述します。頂点、頂点マップ、および Mesh の描画方式はどのように対象が正確に画面へ表示されるか決定するために動作します。

頂点マップは描画時に頂点の再利用また並び替えを頂点の引数または頂点の複製といった実際の変更なしで可能にします。これは異なる Mesh の描画方式と組み合わせたときに特に有用です。

関数

概要

Mesh:setVertexMap( map )

引数

table map
描画時に使用する頂点の索引一覧があるテーブル。必ず値の範囲は [1, Mesh:getVertexCount()] にしてください。

返値

ありません。

関数

概要

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

引数

number vi1
描画時に使用する一番目の頂点の索引。必ず値の範囲は [1, Mesh:getVertexCount()] にしてください。
number vi2
描画時に使用する二番目の頂点の索引。
number vi3
描画時に使用する三番目の頂点の索引。

返値

ありません。

用例

頂点のコピー・貼り付けを行わず視覚的な問題を修正するために頂点マップを使用します。

function love.load()
    image = love.graphics.newImage("pig.png")
    local w,h = image:getDimensions()

    -- 頂点が画像の中央に 1 つ、角に 4 つある Mesh を作成したいとします。
    local vertices = {
        {w/2, h/2, 0.5, 0.5, 255,   0,   0}, -- 赤色の中心にある頂点
        {0,   0,   0,   0,   255, 255, 255}, -- 左上。
        {w,   0,   1,   0,   255, 255, 255}, -- 右上。
        {w,   h,   1,   1,   255, 255, 255}, -- 右下。
        {0,   h,   0,   1,   255, 255, 255}, -- 左下。
    }

    -- しかし問題があります! 描画された Mesh の左側には欠落した大きな三角形があります。
    -- この理由として、標準の Mesh 描画方式 ("fan") では、頂点の "ループ" を行いません: 左上の頂点 (#2) は右下 (#5) へは未接続です。
    mesh = love.graphics.newMesh(vertices)
    mesh:setTexture(image)

    -- 第二の頂点を頂点テーブルの最後へコピー・貼り付けることができました。
    -- しかし単に頂点マップにて変更することができます!
    mesh:setVertexMap(1, 2, 3, 4, 5, 2)
end

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

関連


そのほかの言語