Kuina-chan

くいなちゃん2018年12月11日


プログラミング言語Kuin」の言語仕様302、「drawライブラリ」についてです。

1drawライブラリ

グラフィックスを描画するライブラリ「draw.kn」を解説します。
drawライブラリは、コンパイルオプションの実行環境が「wnd(ウインドウアプリ)」のときのみ使用可能です。
色をintで扱っている箇所ではsRGB空間になっており、floatで扱っている箇所ではリニア空間になっています。 通常はsRGB空間のintで指定し、色以外の情報を色として扱う場合にはリニア空間のfloatで指定してください。
int(sRGB)で色を指定する場合、例えば「0xFF123456」と指定すると、アルファ=FF、赤=12、緑=34、青=56となります。
名前 説明
draw@Blend ブレンドを表す列挙型
draw@Font フォントクラス
draw@Font.calcWidth 文字列を描画したときの幅を取得するメソッド
draw@Font.draw フォントを使って文字列を描画するメソッド
draw@Font.maxHeight 最大の文字の高さを取得するメソッド
draw@Font.maxWidth 最大の文字の幅を取得するメソッド
draw@Obj 3Dオブジェクトクラス
draw@Obj.draw 3Dオブジェクトを描画するメソッド
draw@Obj.drawOutline 3Dオブジェクトの輪郭線を描画するメソッド
draw@Obj.drawToon 3Dオブジェクトをトゥーン描画するメソッド
draw@Obj.look 3Dオブジェクトを指定した位置から注視点を向くように設定するメソッド
draw@Obj.lookCamera 3Dオブジェクトをカメラの方向へ向くように設定するメソッド
draw@Obj.mat 3Dオブジェクトへの変換行列を設定するメソッド
draw@Obj.pos 3Dオブジェクトの拡縮、回転、位置を設定するメソッド
draw@Particle パーティクルクラス
draw@Particle.accelX 加速度Xのプロパティ
draw@Particle.accelY 加速度Yのプロパティ
draw@Particle.accelZ 加速度Zのプロパティ
draw@Particle.color1 放出時の色(sRGB)のプロパティ
draw@Particle.color2 消失時の色(sRGB)のプロパティ
draw@Particle.draw2d パーティクルを2D描画するメソッド
draw@Particle.emit パーティクルを放出するメソッド
draw@Particle.friction 摩擦のプロパティ
draw@Particle.lifespan 寿命のプロパティ
draw@Particle.rotAccel 回転の加速度のプロパティ
draw@Particle.sizeAccel サイズの加速度のプロパティ
draw@Sampler サンプラーを表す列挙型
draw@Tex テクスチャクラス
draw@Tex.draw テクスチャを描画するメソッド
draw@Tex.drawRot テクスチャを拡縮および回転描画するメソッド
draw@Tex.drawScale テクスチャを拡縮描画するメソッド
draw@ambLight 環境光を設定する関数
draw@argbToColor リニア空間の色をsRGB空間の色に変換する関数
draw@autoClear draw@render時にクリアするかどうかを設定する関数
draw@black 黒色(#000000)を表す定数
draw@blend ブレンドを設定する関数
draw@camera カメラを設定する関数
draw@capture 画面をキャプチャして画像ファイルに保存する関数
draw@circle 塗りつぶされた円を描画する関数
draw@circleLine 円の枠線を描画する関数
draw@clear 画面をクリアする関数
draw@clearColor 画面クリアの色を設定する関数
draw@cnt フレームの回数を取得する関数
draw@colorToArgb sRGB空間の色をリニア空間の色に変換する関数
draw@depth デプスバッファを設定する関数
draw@dirLight 平行光を設定する関数
draw@editPixels ピクセル単位で画面を編集する関数
draw@filterMonotone 画面全体をモノトーンにするフィルターを設定する関数
draw@filterNone フィルターを無効化する関数
draw@line 線分を描画する関数
draw@makeFont フォントクラスのインスタンスを生成する関数
draw@makeObj 3Dオブジェクトをファイルから作成する関数
draw@makeParticle パーティクルを作成する関数
draw@makeTex テクスチャを画像ファイルから作成する関数
draw@makeTexArgb テクスチャを画像ファイルからリニアカラーで作成する関数
draw@makeTexEvenArgb 均一な色のテクスチャをリニアカラーで作成する関数
draw@makeTexEvenColor 均一な色のテクスチャを作成する関数
draw@poly 塗りつぶされた多角形を描画する関数
draw@polyLine 繋がった複数の線分を描画する関数
draw@proj プロジェクションを設定する関数
draw@rect 塗りつぶされた四角形を描画する関数
draw@rectLine 四角形の枠線を描画する関数
draw@render バックバッファをフロントバッファへ転送する関数
draw@resetViewport ビューポートをリセットする関数
draw@sampler サンプラーを設定する関数
draw@target 描画ターゲットとするドローコントロールを指定する関数
draw@tri 塗りつぶされた三角形を描画する関数
draw@viewport ビューポートを設定する関数
draw@white 白色(#FFFFFF)を表す定数

2draw@Blend

「draw@Blend」は、ブレンドを表す列挙型です。
名前 説明
%add 加算合成。 描画先の色に描画元の色を足し合わせて明るくなる
%alpha アルファ合成。 描画元のアルファ値により半透明描画が可能
%mul 乗算合成。 描画先の色に描画元の色を掛けて暗くなる
%none ブレンドなし。 描画元がそのまま不透明で表示され、高速に動作する
%sub 減算合成。 描画先の色から描画元の色を引く

3draw@Font

「draw@Font」は、フォントクラスです。

3.1draw@Font.calcWidth



「draw@Font.calcWidth」は、文字列を描画したときの幅を取得するメソッドです。

3.2draw@Font.draw



「draw@Font.draw」は、フォントを使って文字列を描画するメソッドです。

func draw(dstX: float, dstY: float, text: []char, color: int)

dstX 描画先の左端座標
dstY 描画先の上端座標
text 描画する文字列(nullは指定できない)
color 色(sRGB)
表3-1: draw@Font.drawの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

3.3draw@Font.maxHeight



「draw@Font.maxHeight」は、最大の文字の高さを取得するメソッドです。

3.4draw@Font.maxWidth



「draw@Font.maxWidth」は、最大の文字の幅を取得するメソッドです。

4draw@Obj

「draw@Obj」は、3Dオブジェクトクラスです。

4.1draw@Obj.draw



「draw@Obj.draw」は、3Dオブジェクトを描画するメソッドです。

func draw(element: int, frame: float, diffuse: draw@Tex, specular: draw@Tex, normal: draw@Tex)

element 複数のオブジェクトが含まれている場合の要素番号
frame アニメーションフレーム
diffuse ディフューズマップのテクスチャ。 デフォルト値を使う場合はnull
specular スペキュラマップのテクスチャ。 デフォルト値を使う場合はnull
normal 法線マップのテクスチャ。 デフォルト値を使う場合はnull
ディフューズマップとは、物体に光が当たったときに一部を吸収して色となって見えるときの、物体の色情報をrgbに格納したテクスチャです。 aは使われません。 例えば赤いリンゴであれば赤いテクスチャを用意します。 nullを指定した場合、rは0.6、gは0.6、bは0.6となります。
スペキュラマップとは、物体に光が当たったときに全反射して光そのものが見えるときの、物体の反射情報をrgbに格納したテクスチャです。 aには表面の滑らかさを格納します。 nullを指定した場合、rは0.7、gは0.7、bは0.7、aは3.0となります。
法線マップとは、物体の表面の小さな傾きのxyz成分をそれぞれrgbに格納したテクスチャです。 aは使われません。 nullを指定した場合、傾きが無いテクスチャとして、rは0.5、gは0.5、bは1.0となります。
表4-1: draw@Obj.drawの例外
発生条件 ビルド 例外コード
(16進数)
elementの値が0未満、もしくは存在しているオブジェクト数以上 dbgのみ E9170006

4.2draw@Obj.drawOutline



「draw@Obj.drawOutline」は、3Dオブジェクトの輪郭線を描画するメソッドです。

func drawOutline(element: int, frame: float, width: float, color: int)

element 複数のオブジェクトが含まれている場合の要素番号
frame アニメーションフレーム
width 輪郭線の太さ
color 輪郭線の色
表4-2: draw@Obj.drawOutlineの例外
発生条件 ビルド 例外コード
(16進数)
elementの値が0未満、もしくは存在しているオブジェクト数以上 dbgのみ E9170006

4.3draw@Obj.drawToon



「draw@Obj.drawToon」は、3Dオブジェクトをトゥーン描画するメソッドです。

func drawToon(element: int, frame: float, diffuse: draw@Tex, specular: draw@Tex, normal: draw@Tex)

element 複数のオブジェクトが含まれている場合の要素番号
frame アニメーションフレーム
diffuse ディフューズマップのテクスチャ。 デフォルト値を使う場合はnull
specular スペキュラマップのテクスチャ。 デフォルト値を使う場合はnull
normal 法線マップのテクスチャ。 デフォルト値を使う場合はnull
表4-3: draw@Obj.drawToonの例外
発生条件 ビルド 例外コード
(16進数)
elementの値が0未満、もしくは存在しているオブジェクト数以上 dbgのみ E9170006

4.4draw@Obj.look



「draw@Obj.look」は、3Dオブジェクトを指定した位置から注視点を向くように設定するメソッドです。

4.5draw@Obj.lookCamera



「draw@Obj.lookCamera」は、3Dオブジェクトをカメラの方向へ向くように設定するメソッドです。

4.6draw@Obj.mat



「draw@Obj.mat」は、3Dオブジェクトへの変換行列を設定するメソッドです。

4.7draw@Obj.pos



「draw@Obj.pos」は、3Dオブジェクトの拡縮、回転、位置を設定するメソッドです。

func pos(scaleX: float, scaleY: float, scaleZ: float, rotX: float, rotY: float, rotZ: float, transX: float, transY: float, transZ: float)

scaleX 拡大率X。 1.0なら等倍
scaleY 拡大率Y。 1.0なら等倍
scaleZ 拡大率Z。 1.0なら等倍
rotX X軸を中心とする回転角度[rad]
rotY Y軸を中心とする回転角度[rad]
rotZ Z軸を中心とする回転角度[rad]
transX 位置X
transY 位置Y
transZ 位置Z
変換の処理は、引数の順序と同じく、拡大、回転X、回転Y、回転Z、位置の順に行います。

5draw@Particle

「draw@Particle」は、パーティクルクラスです。

5.1draw@Particle.accelX



「draw@Particle.accelX」は、加速度Xのプロパティです。

5.2draw@Particle.accelY



「draw@Particle.accelY」は、加速度Yのプロパティです。

5.3draw@Particle.accelZ



「draw@Particle.accelZ」は、加速度Zのプロパティです。

5.4draw@Particle.color1



「draw@Particle.color1」は、放出時の色(sRGB)のプロパティです。

5.5draw@Particle.color2



「draw@Particle.color2」は、消失時の色(sRGB)のプロパティです。

5.6draw@Particle.draw2d



「draw@Particle.draw2d」は、パーティクルを2D描画するメソッドです。

5.7draw@Particle.emit



「draw@Particle.emit」は、パーティクルを放出するメソッドです。

5.8draw@Particle.friction



「draw@Particle.friction」は、摩擦のプロパティです。

5.9draw@Particle.lifespan



「draw@Particle.lifespan」は、寿命のプロパティです。

5.10draw@Particle.rotAccel



「draw@Particle.rotAccel」は、回転の加速度のプロパティです。

5.11draw@Particle.sizeAccel



「draw@Particle.sizeAccel」は、サイズの加速度のプロパティです。

6draw@Sampler

「draw@Sampler」は、サンプラーを表す列挙型です。
名前 説明
%linear 拡大縮小や回転時にバイリニアで補間する。 ピクセルとピクセルの間がグラデーションで補間され、なめらかな見た目になる
%point 拡大縮小や回転時にニアレストネイバーで補間する。 最も近いピクセルの色で補間され、ドット感がはっきりした見た目になる

7draw@Tex

「draw@Tex」は、テクスチャクラスです。

7.1draw@Tex.draw



「draw@Tex.draw」は、テクスチャを描画するメソッドです。

func draw(dstX: float, dstY: float, srcX: float, srcY: float, srcW: float, srcH: float, color: int)

dstX 描画先の左端座標
dstY 描画先の上端座標
srcX 描画元の左端座標
srcY 描画元の上端座標
srcW 描画元の幅
srcH 描画元の高さ
color 色(sRGB)
表7-1: draw@Tex.drawの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

7.2draw@Tex.drawRot



「draw@Tex.drawRot」は、テクスチャを拡縮および回転描画するメソッドです。

func drawRot(dstX: float, dstY: float, dstW: float, dstH: float, srcX: float, srcY: float, srcW: float, srcH: float, centerX: float, centerY: float, angle: float, color: int)

dstX 描画先の左端座標
dstY 描画先の上端座標
dstW 描画先の幅
dstH 描画先の高さ
srcX 描画元の左端座標
srcY 描画元の上端座標
srcW 描画元の幅
srcH 描画元の高さ
centerX 回転中心座標X
centerY 回転中心座標Y
angle 回転角度[rad]
color 色(sRGB)
表7-2: draw@Tex.drawRotの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

7.3draw@Tex.drawScale



「draw@Tex.drawScale」は、テクスチャを拡縮描画するメソッドです。

func drawScale(dstX: float, dstY: float, dstW: float, dstH: float, srcX: float, srcY: float, srcW: float, srcH: float, color: int)

dstX 描画先の左端座標
dstY 描画先の上端座標
dstW 描画先の幅
dstH 描画先の高さ
srcX 描画元の左端座標
srcY 描画元の上端座標
srcW 描画元の幅
srcH 描画元の高さ
color 色(sRGB)
表7-3: draw@Tex.drawScaleの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

8draw@ambLight

「draw@ambLight」は、環境光を設定する関数です。

func ambLight(topR: float, topG: float, topB: float, bottomR: float, bottomG: float, bottomB: float)

topR 空の色の赤成分
topG 空の色の緑成分
topB 空の色の青成分
bottomR 地面の色の赤成分
bottomG 地面の色の緑成分
bottomB 地面の色の青成分
環境光とは、物体に当たって反射した光が周囲を照らす間接光を近似したものです。 ポリゴンが上を向いているほど空の色の影響を受け、下を向いているほど地面の色の影響を受けます。
アプリ起動時には、topRは0.05、topGは0.05、topBは0.08、bottomRは0.08、bottomGは0.05、bottomBは0.05に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。

9draw@argbToColor

「draw@argbToColor」は、リニア空間の色をsRGB空間の色に変換する関数です。

10draw@autoClear

「draw@autoClear」は、draw@render時にクリアするかどうかを設定する関数です。

11draw@black

「draw@black」は、黒色(#000000)を表す定数です。

const black: int :: 0xFF000000

12draw@blend

「draw@blend」は、ブレンドを設定する関数です。

func blend(kind: draw@Blend)

kind ブレンドの種類
アプリ起動時には%alphaに設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
表12-1: draw@blendの例外
発生条件 ビルド 例外コード
(16進数)
kindの値が有効範囲外 dbgのみ E9170006

13draw@camera

「draw@camera」は、カメラを設定する関数です。

func camera(eyeX: float, eyeY: float, eyeZ: float, atX: float, atY: float, atZ: float, upX: float, upY: float, upZ: float)

eyeX 視線の位置X
eyeY 視線の位置Y
eyeZ 視線の位置Z
atX 注視点の位置X
atY 注視点の位置Y
atZ 注視点の位置Z
upX カメラの上方向X
upY カメラの上方向Y
upZ カメラの上方向Z
カメラが視線の位置に移動して、注視点を向くように設定されます。
upX、upY、upZはカメラの上面が向いている向きを表します。 カメラの上面が空の方向を向いている場合にはそれぞれ0.0、1.0、0.0になります。
アプリ起動時には、eyeXは0.0、eyeYは0.0、eyeZは10.0、atXは0.0、atYは0.0、atZは0.0、upXは0.0、upYは1.0、upZは0.0に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
この関数は、設定できない値が渡されたときには何もせずに抜けます。

14draw@capture

「draw@capture」は、画面をキャプチャして画像ファイルに保存する関数です。

15draw@circle

「draw@circle」は、塗りつぶされた円を描画する関数です。

func circle(x: float, y: float, radiusX: float, radiusY: float, color: int)

x 中心のX座標
y 中心のY座標
radiusX 半径X
radiusY 半径Y
color 色(sRGB)
本関数は廃止予定です。 draw2d@circle関数をお使いください。
表15-1: draw@circleの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

16draw@circleLine

「draw@circleLine」は、円の枠線を描画する関数です。

func circleLine(x: float, y: float, radiusX: float, radiusY: float, color: int)

x 中心のX座標
y 中心のY座標
radiusX 半径X
radiusY 半径Y
color 色(sRGB)
本関数は廃止予定です。 draw2d@circleLine関数をお使いください。
表16-1: draw@circleLineの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

17draw@clear

「draw@clear」は、画面をクリアする関数です。

18draw@clearColor

「draw@clearColor」は、画面クリアの色を設定する関数です。

func clearColor(color: int)

color 色(sRGB)
画面クリアは、バックバッファをフロントバッファに転送するたびに、自動でバックバッファに対して行われます。
表18-1: draw@clearColorの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

19draw@cnt

「draw@cnt」は、フレームの回数を取得する関数です。

func cnt(): int

戻り値 フレームの回数
フレームの回数とは、draw@render関数を引数が0以外で呼び出した回数のことです。 この値は1フレームごとに1ずつ増えますので、アニメーションなどの表現に利用できます。

20draw@colorToArgb

「draw@colorToArgb」は、sRGB空間の色をリニア空間の色に変換する関数です。

21draw@depth

「draw@depth」は、デプスバッファを設定する関数です。

func depth(test: bool, write: bool)

text デプステストを有効にするにはtrue、無効にするにはfalse
write デプスバッファへの書き込みを有効にするにはtrue、無効にするにはfalse
testがtrueの場合、これから描画する物体のカメラから見た奥行きが、既に描画されている物体の奥行きと同じかそれよりも奥の場合、描画をスキップします。 「既に描画されている物体の奥行き」とは、writeをtrueにして描画した物体のみが該当します。
writeがtrueの場合、描画時にその物体の奥行き情報を記録します。
2Dのものを描画するときは通常、testはfalse、writeはfalseに設定し、3Dのものを描画するときは通常、testはtrue、writeはtrueに設定すると良いでしょう。
アプリ起動時にはtestはfalse、writeはfalseに設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。

22draw@dirLight

「draw@dirLight」は、平行光を設定する関数です。

func dirLight(atX: float, atY: float, atZ: float, r: float, g: float, b: float)

atX 光を照らす方向X
atY 光を照らす方向Y
atZ 光を照らす方向Z
r 光の赤成分
g 光の緑成分
b 光の青成分
平行光とは、無限遠から直線的に照らす、太陽光に相当する光です。
アプリ起動時には、atXは1.0、atYは-1.0、atZは-1.0、rは2.0、gは2.0、bは2.0に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。

23draw@editPixels

「draw@editPixels」は、ピクセル単位で画面を編集する関数です。

24draw@filterMonotone

「draw@filterMonotone」は、画面全体をモノトーンにするフィルターを設定する関数です。

func filterMonotone(color: int, rate: float)

color モノトーンの色
rate ブレンド率(0.0なら元の画像、1.0なら完全なモノトーン)

25draw@filterNone

「draw@filterNone」は、フィルターを無効化する関数です。

func filterNone()

フィルターは一度設定すると永続的に反映されるため、本関数で明示的に解除する必要があります。

26draw@line

「draw@line」は、線分を描画する関数です。

func line(x1: float, y1: float, x2: float, y2: float, color: int)

x1 頂点1のX座標
y1 頂点1のY座標
x2 頂点2のX座標
y2 頂点2のY座標
color 色(sRGB)
本関数は高速に線分が描画できますが、アンチエイリアス処理は行わず、線の太さも指定できません。 単純な描画を行いたいとき以外では、draw2d@line関数をお使いください。
表26-1: draw@lineの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

27draw@makeFont

「draw@makeFont」は、フォントクラスのインスタンスを生成する関数です。

func makeFont(fontName: []char, size: int, bold: bool, italic: bool, proportional: bool, advance: float): draw@Font

fontName フォント名。 nullを指定すると「Meiryo UI」となる
size フォントサイズ
bold 太字にする場合はtrue、しない場合はfalse
italic 斜体にする場合はtrue、しない場合はfalse
proportional プロポーショナルにする場合はtrue、等幅にする場合はfalse
advance 文字の間隔。 プロポーショナルの場合は0.0にすると自然な見た目になり、0.0から増減させることで間隔が調整できる。 等幅の場合は0.0にするとすべての文字が重なるため、文字幅の値を指定する必要がある
戻り値 フォントクラスのインスタンス
指定したフォントが存在しなかった場合は、OSによって適当なフォントが自動的に選ばれます。
表27-1: draw@makeFontの例外
発生条件 ビルド 例外コード
(16進数)
sizeが1未満 dbgのみ E9170006
テクスチャの生成に失敗 dbg、rls E9170009

28draw@makeObj

「draw@makeObj」は、3Dオブジェクトをファイルから作成する関数です。

func makeObj(path: []char): draw@Obj

path 3Dオブジェクトファイルのパス(.knobj)
戻り値 3Dオブジェクトクラスのインスタンス
「.knobj」ファイルは、処理速度を最適化したKuinの独自形式です。
表28-1: draw@makeObjの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが存在しない dbg、rls E9170007
3Dオブジェクトファイルが読み込めない形式になっている dbg、rls E9170008
テクスチャの生成に失敗 dbg、rls E9170009

29draw@makeParticle

「draw@makeParticle」は、パーティクルを作成する関数です。

30draw@makeTex

「draw@makeTex」は、テクスチャを画像ファイルから作成する関数です。

func makeTex(path: []char): draw@Tex

path 画像のファイルパス(.png、.jpg、.dds)
戻り値 テクスチャクラスのインスタンス
「.dds」ファイルの場合は、画像サイズの縦および横がそれぞれ2の累乗になっていなければなりません。 「.png」「.jpg」ファイルは、自動的に2の累乗に調整されます。
表30-1: draw@makeTexの例外
発生条件 ビルド 例外コード
(16進数)
ファイルの拡張子が「.png、.jpg、.dds」以外 dbgのみ E9170006
ファイルが存在しない dbg、rls E9170007
画像ファイルが読み込めない形式になっている dbg、rls E9170008
テクスチャの生成に失敗 dbg、rls E9170009
図30-1: 画像ファイルの対応フォーマット
  • 各チャンネル8ビットの、カラーおよびグレースケールに対応
  • アルファチャンネルあり、なしの両方に対応
  • インターレースあり、なしの両方に対応
図30-2: .pngファイルの対応フォーマット
  • ベースライン形式にのみ対応。(保存時に「プログレッシブ」ではなく「ベースライン」で保存してください)
図30-3: draw@makeTexの仕様

31draw@makeTexArgb

「draw@makeTexArgb」は、テクスチャを画像ファイルからリニアカラーで作成する関数です。

32draw@makeTexEvenArgb

「draw@makeTexEvenArgb」は、均一な色のテクスチャをリニアカラーで作成する関数です。

func makeTexEvenArgb(a: float, r: float, g: float, b: float): draw@Tex

a アルファ
r
g
b
戻り値 テクスチャクラスのインスタンス
表32-1: draw@makeTexEvenArgbの例外
発生条件 ビルド 例外コード
(16進数)
テクスチャの生成に失敗 dbg、rls E9170009

33draw@makeTexEvenColor

「draw@makeTexEvenColor」は、均一な色のテクスチャを作成する関数です。

func makeTexEvenColor(color: int): draw@Tex

color 色(sRGB)
戻り値 テクスチャクラスのインスタンス
表33-1: draw@makeTexEvenColorの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006
テクスチャの生成に失敗 dbg、rls E9170009

34draw@poly

「draw@poly」は、塗りつぶされた多角形を描画する関数です。

35draw@polyLine

「draw@polyLine」は、繋がった複数の線分を描画する関数です。

36draw@proj

「draw@proj」は、プロジェクションを設定する関数です。

func proj(fovy: float, aspectX: float, aspectY: float, nearZ: float, farZ: float)

fovy 縦の画角
aspectX アスペクト比X
aspectY アスペクト比Y
nearZ カメラからニアクリップ面までの距離
farZ カメラからファークリップ面までの距離
カメラで撮影したものを画面に転送する方法を設定する関数です。
fovyはカメラの縦の画角で、大きくなるほど広角になり、小さくなるほど望遠になります。
aspectX、aspectYは画面のアスペクト比です。 16:9の画面ならaspectXには16.0、aspectYには9.0を設定します。
nearZ、farZはクリップ面の設定で、カメラからの奥行きがnearZからfarZの範囲に無いものは描画しません。 奥行きの値を有限範囲にしておくと様々な場面で役に立つため、便宜上設定します。 nearZは0.0にはできません。
アプリ起動時には、fovyは27°(50mmレンズの画角に相当)、aspectXは16.0、aspectYは9.0、nearZは0.01、farZは1000.0に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
表36-1: draw@projの例外
発生条件 ビルド 例外コード
(16進数)
fovyが0以下、もしくは以上 dbgのみ E9170006
aspectXもしくはaspectYが0以下 dbgのみ E9170006
nearZが0以下、もしくはnearZがfarZ以上 dbgのみ E9170006

37draw@rect

「draw@rect」は、塗りつぶされた四角形を描画する関数です。

func rect(x: float, y: float, width: float, height: float, color: int)

x 左端座標
y 上端座標
width
height 高さ
color 色(sRGB)
本関数は高速に四角形が描画できますが、アンチエイリアス処理は行いません。 単純な描画を行いたいとき以外では、draw2d@rect関数をお使いください。
表37-1: draw@rectの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

38draw@rectLine

「draw@rectLine」は、四角形の枠線を描画する関数です。

func rectLine(x: float, y: float, width: float, height: float, color: int)

x 左端座標
y 上端座標
width
height 高さ
color 色(sRGB)
本関数は高速に四角形が描画できますが、アンチエイリアス処理は行わず、線の太さも指定できません。 単純な描画を行いたいとき以外では、draw2d@rectLine関数をお使いください。
表38-1: draw@rectLineの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

39draw@render

「draw@render」は、バックバッファをフロントバッファへ転送する関数です。

func render(fps: int)

fps 指定したFPSになるように自動でウエイトを行う。 0を指定するとウエイトなし
drawライブラリでは描画したものはバックバッファに描かれるため、画面上で見えるようにするために最後にフロントバッファへ転送する必要があります。 このような仕組みにすることで、描画途中の状態が画面上に現れず、画面のちらつきが防げます。
例えば60FPSのゲームを作る場合、引数に60を渡すと、処理落ちも考慮して60FPSになるように関数内で自動で待ちます。 転送だけ行って直ちに関数を抜けたい場合には0を指定してください。
表39-1: draw@renderの例外
発生条件 ビルド 例外コード
(16進数)
fpsの値が「0、30、60」以外の値 dbgのみ E9170006

40draw@resetViewport

「draw@resetViewport」は、ビューポートをリセットする関数です。

41draw@sampler

「draw@sampler」は、サンプラーを設定する関数です。

func sampler(kind: draw@Sampler)

sampler サンプラーの種類
アプリ起動時には%linearに設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
表41-1: draw@samplerの例外
発生条件 ビルド 例外コード
(16進数)
kindの値が有効範囲外 dbgのみ E9170006

42draw@target

「draw@target」は、描画ターゲットとするドローコントロールを指定する関数です。

func target(drawCtrl: wnd@Draw)

drawCtrl ドローコントロール
drawライブラリで描画したものは最終的にドローコントロール上に表示されますが、この関数によって描画先のドローコントロールを切り替えることができます。
バックバッファはドローコントロールごとに持っているため、バックバッファへの描画とフロントバッファへの転送の両方で適切な描画ターゲットが設定されている必要があります。
  • draw@target関数により明示的に設定したとき
  • wnd@makeDraw関数により、ドローコントロールを作成したとき(作成したコントロールは自動的に描画ターゲットに設定される)
  • wnd@Draw.onPaintイベントが呼ばれるとき(onPaintイベントを設定したコントロールは描画時に自動でターゲットに設定される)
図42-1: 描画ターゲットが切り替わるタイミング

43draw@tri

「draw@tri」は、塗りつぶされた三角形を描画する関数です。

func tri(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float, color: int)

x1 頂点1のX座標
y1 頂点1のY座標
x2 頂点2のX座標
y2 頂点2のY座標
x3 頂点3のX座標
y3 頂点3のY座標
color 色(sRGB)
本関数は高速に三角形が描画できますが、アンチエイリアス処理は行いません。 単純な描画を行いたいとき以外では、draw2d@tri関数をお使いください。
表43-1: draw@triの例外
発生条件 ビルド 例外コード
(16進数)
colorの値が有効範囲外 dbgのみ E9170006

44draw@viewport

「draw@viewport」は、ビューポートを設定する関数です。

45draw@white

「draw@white」は、白色(#FFFFFF)を表す定数です。

const white: int :: 0xFFFFFFFF

1544535201jaf