love.graphics.present (日本語)

画面への描画操作結果を表示します。

この関数は自分で love.run 関数を書く場合に使用します。これにより画面への描画結果を全て表示します。この関数の典型的な使用法については love.run の用例を参照してください。

関数

概要

love.graphics.present( )

引数

なし。

返値

ありません。

注釈

love.window.setMode において vsynctrue ならば、この関数はリフレッシュ・レートよりも頻繁に実行することができなくなり、必要な場合は準備を終えるまでプログラムを停止します。

用例

ゲームの読み込み中にプログレスバーを表示

-- 用例で使うダミー関数。
local function loadSounds()  love.timer.sleep(1) end
local function loadSprites() love.timer.sleep(1) end
local function loadLevels()  love.timer.sleep(1) end

local font = nil

local function drawLoadingScreen(progress, text)
	local windowWidth, windowHeight = love.graphics.getDimensions()

	-- テキストの描画。
	font = font or love.graphics.newFont(26)

	local textX = math.floor((windowWidth - font:getWidth(text)) / 2)
	local textY = math.floor(windowHeight/2) - font:getHeight()

	love.graphics.setColor(1, 1, 1)
	love.graphics.setFont(font)
	love.graphics.print(text, textX, textY)

	-- プログレスバーの描画。
	local progressWidthFull    = 400
	local progressWidthCurrent = progress * progressWidthFull
	local progressHeight       = 20
	local progressX            = math.floor((windowWidth - progressWidthFull) / 2)
	local progressY            = math.floor(windowHeight/2)

	love.graphics.setColor(.2, .2, .2)
	love.graphics.rectangle("fill", progressX, progressY, progressWidthFull, progressHeight)
	love.graphics.setColor(.1, .3, 1)
	love.graphics.rectangle("fill", progressX, progressY, progressWidthCurrent, progressHeight)
end

local function presentLoadingScreen(progress, text)
	love.graphics.clear()
	drawLoadingScreen(progress, text)
	love.graphics.present()
end

function love.load()
	presentLoadingScreen(0/3, "Loading sprites...") ; loadSprites()
	presentLoadingScreen(1/3, "Loading sounds...")  ; loadSounds()
	presentLoadingScreen(2/3, "Loading levels...")  ; loadLevels()
end
function love.draw()
	drawLoadingScreen(3/3, "Done loading!")
end

関連


そのほかの言語