
1drawライブラリ
グラフィックスを描画するライブラリ「draw.kn」を解説します。
drawライブラリは、コンパイルオプションの実行環境が「wnd(ウインドウアプリ)」のときのみ使用可能です。
色をintで扱っている箇所ではsRGB空間になっており、floatで扱っている箇所ではリニア空間になっています。 通常はsRGB空間のintで指定し、色以外の情報を色として扱う場合にはリニア空間のfloatで指定してください。
int(sRGB)で色を指定する場合、例えば「0xFF123456」と指定すると、アルファ=FF、赤=12、緑=34、青=56となります。
名前 | 説明 |
---|---|
draw@AlignHorizontal | 水平方向の揃え方を表す列挙型 |
draw@AlignVertical | 垂直方向の揃え方を表す列挙型 |
draw@Blend | ブレンドを表す列挙型 |
draw@Font | フォントクラス |
draw@Font.align | 文字揃えを設定するメソッド |
draw@Font.calcSize | 文字列を描画したときの幅と高さを取得するメソッド |
draw@Font.calcWidth | 文字列を描画したときの幅を取得するメソッド |
draw@Font.draw | フォントを使って文字列を描画するメソッド |
draw@Font.getHeight | 1行の高さを取得するメソッド |
draw@Font.maxHeight | 最大の文字の高さを取得するメソッド |
draw@Font.maxWidth | 最大の文字の幅を取得するメソッド |
draw@Font.setHeight | 1行の高さを設定するメソッド |
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.draw | パーティクルを3D描画するメソッド |
draw@Particle.draw2d | パーティクルを2D描画するメソッド |
draw@Particle.emit | パーティクルを放出するメソッド |
draw@Sampler | サンプラーを表す列挙型 |
draw@Tex | テクスチャクラス |
draw@Tex.draw | テクスチャを描画するメソッド |
draw@Tex.drawRot | テクスチャを拡縮および回転描画するメソッド |
draw@Tex.drawScale | テクスチャを拡縮描画するメソッド |
draw@Tex.height | テクスチャの高さをピクセル単位で取得するメソッド |
draw@Tex.imgHeight | 画像の高さをピクセル単位で取得するメソッド |
draw@Tex.imgWidth | 画像の幅をピクセル単位で取得するメソッド |
draw@Tex.width | テクスチャの幅をピクセル単位で取得するメソッド |
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@makeBox | 立方体の3Dオブジェクトを作成する関数 |
draw@makeFont | フォントクラスのインスタンスを生成する関数 |
draw@makeObj | 3Dオブジェクトをファイルから作成する関数 |
draw@makeParticle | パーティクルを作成する関数 |
draw@makePlane | 正方形の3Dオブジェクトを作成する関数 |
draw@makeSphere | 球の3Dオブジェクトを作成する関数 |
draw@makeTex | テクスチャを画像ファイルから作成する関数 |
draw@makeTexArgb | テクスチャを画像ファイルからリニアカラーで作成する関数 |
draw@makeTexEvenArgb | 均一な色のテクスチャをリニアカラーで作成する関数 |
draw@makeTexEvenColor | 均一な色のテクスチャを作成する関数 |
draw@poly | 塗りつぶされた多角形を描画する関数 |
draw@polyLine | 繋がった複数の線分を描画する関数 |
draw@proj | プロジェクションを設定する関数 |
draw@rect | 塗りつぶされた四角形を描画する関数 |
draw@rectLine | 四角形の枠線を描画する関数 |
draw@render | バックバッファをフロントバッファへ転送する関数 |
draw@sampler | サンプラーを設定する関数 |
draw@target | 描画ターゲットとするドローコントロールを指定する関数 |
draw@tri | 塗りつぶされた三角形を描画する関数 |
draw@white | 白色(#FFFFFF)を表す定数 |
2draw@AlignHorizontal
「draw@AlignHorizontal」は、水平方向の揃え方を表す列挙型です。
名前 | 説明 |
---|---|
%center | 中央揃え |
%left | 左揃え |
%right | 右揃え |
3draw@AlignVertical
「draw@AlignVertical」は、垂直方向の揃え方を表す列挙型です。
名前 | 説明 |
---|---|
%bottom | 下揃え |
%center | 中央揃え |
%top | 上ぞろえ |
4draw@Blend
「draw@Blend」は、ブレンドを表す列挙型です。
名前 | 説明 |
---|---|
%add | 加算合成。 描画先の色に描画元の色を足し合わせて明るくなる |
%alpha | アルファ合成。 描画元のアルファ値により半透明描画が可能 |
%mul | 乗算合成。 描画先の色に描画元の色を掛けて暗くなる |
%none | ブレンドなし。 描画元がそのまま不透明で表示され、高速に動作する |
%sub | 減算合成。 描画先の色から描画元の色を引く |
%exclusion | 除外。描画先の色と描画元の色を排他的に計算し、色を反転できる |
5draw@Font
「draw@Font」は、フォントクラスです。
5.1draw@Font.align
「draw@Font.align」は、文字揃えを設定するメソッドです。
func align(horizontal: draw@AlignHorizontal, vertical: draw@AlignVertical) |
|
horizontal | 水平方向の文字揃え |
vertical | 垂直方向の文字揃え |
初期値ではhorizontalは%left、verticalは%topに設定されています。
5.2draw@Font.calcSize
「draw@Font.calcSize」は、文字列を描画したときの幅と高さを取得するメソッドです。
func calcSize(width: &float, height: &float, text: []char) |
|
width | 描画したときの幅 |
height | 描画したときの高さ |
text | 文字列(nullは指定できない) |
5.3draw@Font.calcWidth
「draw@Font.calcWidth」は、文字列を描画したときの幅を取得するメソッドです。
func calcWidth(text: []char): float |
|
text | 文字列(nullは指定できない) |
戻り値 | 描画したときの幅 |
5.4draw@Font.draw
「draw@Font.draw」は、フォントを使って文字列を描画するメソッドです。
func draw(dstX: float, dstY: float, text: []char, color: int) |
|
dstX | 描画先の左端座標 |
dstY | 描画先の上端座標 |
text | 描画する文字列(nullは指定できない) |
color | 色(sRGB) |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
5.5draw@Font.getHeight
「draw@Font.getHeight」は、1行の高さを取得するメソッドです。
func getHeight(): float |
|
戻り値 | 1行の高さ |
5.6draw@Font.maxHeight
「draw@Font.maxHeight」は、最大の文字の高さを取得するメソッドです。
func maxHeight(): float |
|
戻り値 | 最大の文字の高さ |
5.7draw@Font.maxWidth
「draw@Font.maxWidth」は、最大の文字の幅を取得するメソッドです。
func maxWidth(): float |
|
戻り値 | 最大の文字の幅 |
5.8draw@Font.setHeight
「draw@Font.setHeight」は、1行の高さを設定するメソッドです。
func setHeight(height: float) |
|
height | 1行の高さ |
初期値ではフォントの情報をもとに自然な高さに設定されています。
6draw@Obj
「draw@Obj」は、3Dオブジェクトクラスです。
6.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となります。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
elementの値が0未満、もしくは存在しているオブジェクト数以上 | dbgのみ | E9170006 |
6.2draw@Obj.drawOutline
「draw@Obj.drawOutline」は、3Dオブジェクトの輪郭線を描画するメソッドです。
func drawOutline(element: int, frame: float, width: float, color: int) |
|
element | 複数のオブジェクトが含まれている場合の要素番号 |
frame | アニメーションフレーム |
width | 輪郭線の太さ |
color | 輪郭線の色 |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
elementの値が0未満、もしくは存在しているオブジェクト数以上 | dbgのみ | E9170006 |
6.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 |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
elementの値が0未満、もしくは存在しているオブジェクト数以上 | dbgのみ | E9170006 |
6.4draw@Obj.look
「draw@Obj.look」は、3Dオブジェクトを指定した位置から注視点を向くように設定するメソッドです。
6.5draw@Obj.lookCamera
「draw@Obj.lookCamera」は、3Dオブジェクトをカメラの方向へ向くように設定するメソッドです。
6.6draw@Obj.mat
「draw@Obj.mat」は、3Dオブジェクトへの変換行列を設定するメソッドです。
6.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、位置の順に行います。
7draw@Particle
「draw@Particle」は、パーティクルクラスです。
7.1draw@Particle.draw
「draw@Particle.draw」は、パーティクルを3D描画するメソッドです。
7.2draw@Particle.draw2d
「draw@Particle.draw2d」は、パーティクルを2D描画するメソッドです。
7.3draw@Particle.emit
「draw@Particle.emit」は、パーティクルを放出するメソッドです。
8draw@Sampler
「draw@Sampler」は、サンプラーを表す列挙型です。
名前 | 説明 |
---|---|
%linear | 拡大縮小や回転時にバイリニアで補間する。 ピクセルとピクセルの間がグラデーションで補間され、なめらかな見た目になる |
%point | 拡大縮小や回転時にニアレストネイバーで補間する。 最も近いピクセルの色で補間され、ドット感がはっきりした見た目になる |
9draw@Tex
「draw@Tex」は、テクスチャクラスです。
9.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) |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
9.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) |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
9.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) |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
9.4draw@Tex.height
「draw@Tex.height」は、テクスチャの高さをピクセル単位で取得するメソッドです。
func height(): int |
|
戻り値 | テクスチャの高さ |
画像からテクスチャを作成したときには、テクスチャの高さは2の累乗に切り上げられています。 テクスチャではなく画像の高さを取得したい場合にはdraw@Tex.imgHeightを使用してください。
9.5draw@Tex.imgHeight
「draw@Tex.imgHeight」は、画像の高さをピクセル単位で取得するメソッドです。
func imgHeight(): int |
|
戻り値 | 画像の高さ |
画像からテクスチャを作成したときには、テクスチャの高さは2の累乗に切り上げられています。 画像ではなくテクスチャの高さを取得したい場合にはdraw@Tex.heightを使用してください。
9.6draw@Tex.imgWidth
「draw@Tex.imgWidth」は、画像の幅をピクセル単位で取得するメソッドです。
func imgWidth(): int |
|
戻り値 | 画像の幅 |
画像からテクスチャを作成したときには、テクスチャの幅は2の累乗に切り上げられています。 画像ではなくテクスチャの幅を取得したい場合にはdraw@Tex.widthを使用してください。
9.7draw@Tex.width
「draw@Tex.width」は、テクスチャの幅をピクセル単位で取得するメソッドです。
func width(): int |
|
戻り値 | テクスチャの幅 |
画像からテクスチャを作成したときには、テクスチャの幅は2の累乗に切り上げられています。 テクスチャではなく画像の幅を取得したい場合にはdraw@Tex.imgWidthを使用してください。
10draw@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に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
11draw@argbToColor
「draw@argbToColor」は、リニア空間の色をsRGB空間の色に変換する関数です。
func argbToColor(a: float, r: float, g: float, b: float): int |
|
a | アルファ |
r | 赤 |
g | 緑 |
b | 青 |
戻り値 | 色(sRGB) |
12draw@autoClear
「draw@autoClear」は、draw@render時にクリアするかどうかを設定する関数です。
func autoClear(enabled: bool) |
|
enabled | draw@render時に自動的にクリアするならtrue、しないならfalse |
初期状態ではtrueに設定されています。
13draw@black
「draw@black」は、黒色(#000000)を表す定数です。
const black: int :: 0xFF000000 |
14draw@blend
「draw@blend」は、ブレンドを設定する関数です。
func blend(kind: draw@Blend) |
|
kind | ブレンドの種類 |
アプリ起動時には%alphaに設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
kindの値が有効範囲外 | dbgのみ | E9170006 |
15draw@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に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
この関数は、設定できない値が渡されたときには何もせずに抜けます。
16draw@capture
「draw@capture」は、画面をキャプチャして画像ファイルに保存する関数です。
func capture(path: []char): bool |
|
path | 保存するファイルパス(.bmp) |
戻り値 | 保存に成功したらtrue、失敗したらfalse |
この関数は処理にやや時間がかかるため、使い方に注意が必要です。
17draw@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関数をお使いください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
18draw@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進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
19draw@clear
「draw@clear」は、画面をクリアする関数です。
func clear() |
draw@autoClear(false)を呼んでいない場合、画面はdraw@render関数の呼び出し時に自動でクリアされます。
20draw@clearColor
「draw@clearColor」は、画面クリアの色を設定する関数です。
func clearColor(color: int) |
|
color | 色(sRGB) |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
21draw@cnt
「draw@cnt」は、フレームの回数を取得する関数です。
func cnt(): int |
|
戻り値 | フレームの回数 |
フレームの回数とは、draw@render関数を引数が0以外で呼び出した回数のことです。 この値は1フレームごとに1ずつ増えますので、アニメーションなどの表現に利用できます。
22draw@colorToArgb
「draw@colorToArgb」は、sRGB空間の色をリニア空間の色に変換する関数です。
func colorToArgb(a: &float, r: &float, g: &float, b: &float, color: int) |
|
color | 色(sRGB) |
a | アルファ |
r | 赤 |
g | 緑 |
b | 青 |
23draw@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に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
24draw@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に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
25draw@editPixels
「draw@editPixels」は、ピクセル単位で画面を編集する関数です。
26draw@filterMonotone
「draw@filterMonotone」は、画面全体をモノトーンにするフィルターを設定する関数です。
func filterMonotone(color: int, rate: float) |
|
color | モノトーンの色 |
rate | ブレンド率(0.0なら元の画像、1.0なら完全なモノトーン) |
27draw@filterNone
「draw@filterNone」は、フィルターを無効化する関数です。
func filterNone() |
フィルターは一度設定すると永続的に反映されるため、本関数で明示的に解除する必要があります。
28draw@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関数をお使いください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
29draw@makeBox
「draw@makeBox」は、立方体の3Dオブジェクトを作成する関数です。
func makeBox(): draw@Obj |
|
戻り値 | 立方体の3Dオブジェクトのインスタンス |
原点が(0,0,0)、1辺の長さが1の立方体です。 つまり(-0.5,-0.5,-0.5)から(0.5,0.5,0.5)の領域にちょうど収まっています。
30draw@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によって適当なフォントが自動的に選ばれます。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
sizeが1未満 | dbgのみ | E9170006 |
テクスチャの生成に失敗 | dbg、rls | E9170009 |
31draw@makeObj
「draw@makeObj」は、3Dオブジェクトをファイルから作成する関数です。
func makeObj(path: []char): draw@Obj |
|
path | 3Dオブジェクトファイルのパス(.knobj) |
戻り値 | 3Dオブジェクトクラスのインスタンス |
「.knobj」ファイルは、処理速度を最適化したKuinの独自形式です。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
ファイルが存在しない | dbg、rls | E9170007 |
3Dオブジェクトファイルが読み込めない形式になっている | dbg、rls | E9170008 |
テクスチャの生成に失敗 | dbg、rls | E9170009 |
32draw@makeParticle
「draw@makeParticle」は、パーティクルを作成する関数です。
func makeParticle(lifeSpan: int, color1: int, color2: int, friction: float, accelX: float, accelY: float, accelZ: float, sizeAccel: float, rotAccel: float): draw@Particle |
|
lifeSpan | 寿命 |
color1 | 放出時の色(sRGB) |
color2 | 消失時の色(sRGB) |
friction | 摩擦 |
accelX | 加速度X |
accelY | 加速度Y |
accelZ | 加速度Z |
sizeAccel | サイズの加速度 |
rotAccel | 回転の加速度 |
戻り値 | パーティクルクラスのインスタンス |
33draw@makePlane
「draw@makePlane」は、正方形の3Dオブジェクトを作成する関数です。
func makePlane(): draw@Obj |
|
戻り値 | 正方形の3Dオブジェクトのインスタンス |
X-Z平面上にある、原点が(0,0,0)、1辺の長さが1の正方形です。 つまり(-0.5,0,-0.5)から(0.5,0,0.5)の領域にちょうど収まっています。
34draw@makeSphere
「draw@makeSphere」は、球の3Dオブジェクトを作成する関数です。
func makeSphere(): draw@Obj |
|
戻り値 | 球の3Dオブジェクトのインスタンス |
原点が(0,0,0)、直径が1の球です。 つまり(-0.5,-0.5,-0.5)から(0.5,0.5,0.5)の領域にちょうど収まっています。
35draw@makeTex
「draw@makeTex」は、テクスチャを画像ファイルから作成する関数です。
func makeTex(path: []char): draw@Tex |
|
path | 画像のファイルパス(.png、.jpg、.dds) |
戻り値 | テクスチャクラスのインスタンス |
「.dds」ファイルの場合は、画像サイズの縦および横がそれぞれ2の累乗になっていなければなりません。 「.png」「.jpg」ファイルは、自動的に2の累乗に調整されます。
法線マップ用テクスチャなど、色情報以外を書き込んだテクスチャを読み込む場合には、色空間の変換を行わないdraw@makeTexArgb関数をお使いください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
ファイルの拡張子が「.png、.jpg、.dds」以外 | dbgのみ | E9170006 |
ファイルが存在しない | dbg、rls | E9170007 |
画像ファイルが読み込めない形式になっている | dbg、rls | E9170008 |
テクスチャの生成に失敗 | dbg、rls | E9170009 |
- 各チャンネル8ビットの、カラーおよびグレースケールに対応
- アルファチャンネルあり、なしの両方に対応
- インターレースあり、なしの両方に対応
- ベースライン形式にのみ対応。(保存時に「プログレッシブ」ではなく「ベースライン」で保存してください)
36draw@makeTexArgb
「draw@makeTexArgb」は、テクスチャを画像ファイルからリニアカラーで作成する関数です。
func makeTexArgb(path: []char): draw@Tex |
|
path | 画像のファイルパス(.png、.jpg、.dds) |
戻り値 | テクスチャクラスのインスタンス |
「.dds」ファイルの場合は、画像サイズの縦および横がそれぞれ2の累乗になっていなければなりません。 「.png」「.jpg」ファイルは、自動的に2の累乗に調整されます。
色情報を書き込んだ一般的なテクスチャを読み込む場合には、色空間を変換するdraw@makeTex関数をお使いください。
画像の対応形式はdraw@makeTex関数と同じです。
37draw@makeTexEvenArgb
「draw@makeTexEvenArgb」は、均一な色のテクスチャをリニアカラーで作成する関数です。
func makeTexEvenArgb(a: float, r: float, g: float, b: float): draw@Tex |
|
a | アルファ |
r | 赤 |
g | 緑 |
b | 青 |
戻り値 | テクスチャクラスのインスタンス |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
テクスチャの生成に失敗 | dbg、rls | E9170009 |
38draw@makeTexEvenColor
「draw@makeTexEvenColor」は、均一な色のテクスチャを作成する関数です。
func makeTexEvenColor(color: int): draw@Tex |
|
color | 色(sRGB) |
戻り値 | テクスチャクラスのインスタンス |
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
テクスチャの生成に失敗 | dbg、rls | E9170009 |
39draw@poly
「draw@poly」は、塗りつぶされた多角形を描画する関数です。
40draw@polyLine
「draw@polyLine」は、繋がった複数の線分を描画する関数です。
41draw@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に設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
fovyが0以下、もしくは![]() ![]() ![]() |
dbgのみ | E9170006 |
aspectXもしくはaspectYが0以下 | dbgのみ | E9170006 |
nearZが0以下、もしくはnearZがfarZ以上 | dbgのみ | E9170006 |
42draw@rect
「draw@rect」は、塗りつぶされた四角形を描画する関数です。
func rect(x: float, y: float, width: float, height: float, color: int) |
|
x | 左端座標 |
y | 上端座標 |
width | 幅 |
height | 高さ |
color | 色(sRGB) |
本関数は高速に四角形が描画できますが、アンチエイリアス処理は行いません。 単純な描画を行いたいとき以外では、draw2d@rect関数をお使いください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
43draw@rectLine
「draw@rectLine」は、四角形の枠線を描画する関数です。
func rectLine(x: float, y: float, width: float, height: float, color: int) |
|
x | 左端座標 |
y | 上端座標 |
width | 幅 |
height | 高さ |
color | 色(sRGB) |
本関数は高速に四角形が描画できますが、アンチエイリアス処理は行わず、線の太さも指定できません。 単純な描画を行いたいとき以外では、draw2d@rectLine関数をお使いください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
44draw@render
「draw@render」は、バックバッファをフロントバッファへ転送する関数です。
func render(fps: int) |
|
fps | 指定したFPSになるように自動でウエイトを行う。 0を指定するとウエイトなし |
drawライブラリでは描画したものはバックバッファに描かれるため、画面上で見えるようにするために最後にフロントバッファへ転送する必要があります。 このような仕組みにすることで、描画途中の状態が画面上に現れず、画面のちらつきが防げます。
例えば60FPSのゲームを作る場合、引数に60を渡すと、処理落ちも考慮して60FPSになるように関数内で自動で待ちます。 転送だけ行って直ちに関数を抜けたい場合には0を指定してください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
fpsの値が「0、30、60」以外の値 | dbgのみ | E9170006 |
45draw@sampler
「draw@sampler」は、サンプラーを設定する関数です。
func sampler(kind: draw@Sampler) |
|
sampler | サンプラーの種類 |
アプリ起動時には%linearに設定されています。
この関数は一度設定すると効果が持続します。 また操作対象のドローコントロールを切り替えても設定が引き継がれます。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
kindの値が有効範囲外 | dbgのみ | E9170006 |
46draw@target
「draw@target」は、描画ターゲットとするドローコントロールを指定する関数です。
func target(drawCtrl: wnd@Draw) |
|
drawCtrl | ドローコントロール |
drawライブラリで描画したものは最終的にドローコントロール上に表示されますが、この関数によって描画先のドローコントロールを切り替えることができます。
バックバッファはドローコントロールごとに持っているため、バックバッファへの描画とフロントバッファへの転送の両方で適切な描画ターゲットが設定されている必要があります。
- draw@target関数により明示的に設定したとき
- wnd@makeDraw関数により、ドローコントロールを作成したとき(作成したコントロールは自動的に描画ターゲットに設定される)
- wnd@Draw.onPaintイベントが呼ばれるとき(onPaintイベントを設定したコントロールは描画時に自動でターゲットに設定される)
47draw@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関数をお使いください。
発生条件 | ビルド | 例外コード (16進数) |
---|---|---|
colorの値が有効範囲外 | dbgのみ | E9170006 |
48draw@white
「draw@white」は、白色(#FFFFFF)を表す定数です。
const white: int :: 0xFFFFFFFF |
©Kuina-chan