PicoPicoGameEngine

Quick Links

オフスクリーンオブジェクト

オフスクリーンオブジェクトはプログラムでテキスチャを生成できるオブジェクトです。

ppoffscreen

ppspriteのサブクラスです。

.new()

オフスクリーンオブジェクトを作成します。

image = ppoffscreen.new()
image_array = ppoffscreen.new(n)
image : ppoffscreen object

オフスクリーンオブジェクト

n : number

生成するオフスクリーンオブジェクトの数

image_array : object

オフスクリーンオブジェクトの配列

o=ppoffscreen.new()
o:create(100,100)
o:fill({10,10,32,32},ppgraph.red)
o:box({0,0,100,100},ppgraph.red)
o:circle({50,50},30,ppgraph.yellow)
o:paint({1,1},ppgraph.cyan)
o:paint({50,50},ppgraph.blue)
function start()
  o:draw()
end

:create()

オフスクリーンを作成します。

image:create(width, heigth, [texture option])
image : ppoffscreen object

オフスクリーンオブジェクト

width : number

横幅

heigth : number

縦幅

[texture option] : object

読み込むテクスチャのオプション。

{
  linear=[バイリニアフィルタをかけるかどうかのフラッグ],
  wrap_s=[エッジ処理],
  wrap_t=[エッジ処理]
}

linearはバイリニアフィルタを行うかどうかの指定です。デフォルトはfalse。 wrap_s,wrap_tは以下の指定を文字列で行います。

  • linear
  • repeat
  • clamp_to_edge

効果はOpenGLのGL_CLAMP_TO_EDGE, GL_LINEAR, GL_REPEAT に従います。

:bind()

オフスクリーンをテクスチャとして使用するためにバインドします。

image:bind()
image : ppoffscreen object

オフスクリーンオブジェクト

o=ppoffscreen.new()
o:create(100,100)
o:fill(
  {10,10,32,32},ppgraph.red)
o:box(
  {0,0,100,100},ppgraph.red)
o:circle(
  {50,50},30,ppgraph.yellow)
o:paint(
  {1,1},ppgraph.cyan)
o:paint(
  {50,50},ppgraph.blue)
o:hflip()
o:bind()

s=ppsprite.new()
s:texture(o:texture())
s:tile(1)
s:tileSize(100,100)

function start()
  s:draw()
end

:lock()
:unlock()

ppgraphやppspriteなどの描画関数をオフスクリーンに対して使用できます。

image:lock()
image : ppoffscreen object

オフスクリーンオブジェクト

image:unlock([hold])
image : ppoffscreen object

オフスクリーンオブジェクト

[hold] : boolean/optional

holdをfalseにするとテクスチャメモリからメインメモリへの転送を行いません。 高速に処理できますがlock()/unlock()中に描画した画像はbind()などの描画処理を行うとキャンセルされます。

省略するとtrue指定になります。

pptex:default(
  pptex:load("sample.png"))
o=ppoffscreen.new()
o:create(100,100)
o:circle(
  {50,50},30,ppgraph.yellow)

o:lock()
ppgraph:put(34,34,2)
o:unlock()

o:paint(
  {50,10},ppgraph.yellow)
o:hflip()
o:bind()

s=ppsprite.new()
s:texture(o:texture())
s:tile(1)
s:tileSize(100,100)
s:scale(2)

function start()
  s:draw()
end

:pixel()

オフスクリーンに指定した色で点を描きます。

色の指定を省略すると指定した位置のピクセルカラーを取り出します。

image:pixel(x,y,color)
image:pixel({x,y},color)
image:pixel(pos,color)
color = image:pixel(x,y)
color = image:pixel({x,y})
color = image:pixel(pos)
image : ppoffscreen object

オフスクリーンオブジェクト

x : number

X座標

y : number

Y座標

pos : point object

座標

color : color object

:line()

オフスクリーンに指定した色で線を描画します。

色を省略すると白で描画します。

image:line(x1,y1,x2,y2,[color])
image:line({x1,y1},{x2,y2},[color])
image:line(pos1,pos2,[color])
image : ppoffscreen object

オフスクリーンオブジェクト

x1 : number

始点X座標

y1 : number

始点Y座標

x2 : number

終点X座標

y2 : number

終点Y座標

pos1 : point object

始点

pos2 : point object

終点

[color] : color object

:box()

オフスクリーンに指定した色で矩形を描画します。

色を省略すると白で描画します。

image:box(x1,y1,x2,y2,[color])
image:box({x1,y1},{x2,y2},[color])
image:box(pos1,pos2,[color])
image : ppoffscreen object

オフスクリーンオブジェクト

x1 : number

始点X座標

y1 : number

始点Y座標

x2 : number

終点X座標

y2 : number

終点Y座標

pos1 : point object

始点

pos2 : point object

終点

[color] : color object

:fill()

オフスクリーンに指定した色で塗りつぶし矩形を描画します。

色を省略すると白で描画します。

image:fill(x1,y1,x2,y2,[color])
image:fill({x1,y1},{x2,y2},[color])
image:fill(pos1,pos2,[color])
image : ppoffscreen object

オフスクリーンオブジェクト

x1 : number

始点X座標

y1 : number

始点Y座標

x2 : number

終点X座標

y2 : number

終点Y座標

pos1 : point object

始点

pos2 : point object

終点

[color] : color object

:clear()

オフスクリーンを指定した色で塗りつぶします。

色を省略すると透明カラーで塗りつぶします。

image:clear([color])
image : ppoffscreen object

オフスクリーンオブジェクト

[color] : color object/optional

:paint()

オフスクリーンをペイントします。

色を省略すると白で塗りつぶします。

image:paint(x,y,[color])
image:paint({x,y},[color])
image:paint(pos,[color])
image : ppoffscreen object

オフスクリーンオブジェクト

x : number

X座標

y : number

Y座標

pos : point object

座標

[color] : color object/optional

:circle()

オフスクリーンに円を描画します。

色を省略すると白で描画します。

image:circle(x,y,r,[color],[start],[end])
image:circle({x,y},r,[color],[start],[end])
image:circle(pos,r,[color],[start],[end])
image : ppoffscreen object

オフスクリーンオブジェクト

x : number

中心X座標 (タイル単位)

y : number

中心Y座標 (タイル単位)

pos : point object

中心座標 (タイル単位)

r : number

半径

[color] : color object/optional

[start] : number/optional

開始角度 ラジアン

[end] : number/optional

終了角度 ラジアン

:texture()

オフスクリーンのテクスチャを返します。

texture = image:texture()
image : ppoffscreen object

オフスクリーンオブジェクト

texture : texture object

テクスチャオブジェクト

:hflip()

上下反転します。

image:hflip()
image : ppoffscreen object

オフスクリーンオブジェクト

:vflip()

垂直反転します。

image:vflip()
image : ppoffscreen object

オフスクリーンオブジェクト