2Dグラフィック用関数

初期化・設定・指定系処理

GML−Gのグラフィック初期化

D2_Init

関数型 無し
引数 無し
GML−Gを使用してグラフィック処理を始める前に必ず一度呼び出す。
特別に指定がある処理を除いて、繰り返し呼び出す必要は無い。

void pceAppInit( void ){
  D2_Init();

 

描画ウィンドウの設定

D2_WindowSet

関数型 無し
引数 int x, int y, int width, int height
GMLで描画するウィンドウのを設定を行い、ウィンドウの内側だけ描画をおこなう
またウィンドウはディスプレイを越える事は出来ない
引数のx,yはP/ECEの座標系(左上を(0,0)とする)で指定を行い、ウィンドウの左上を指します
引数のWidth,Heithtはそれぞれウィンドウの幅と高さを表します

D2_WindowSet(10,10,108,68);//P/ECEの上下左右10ドット縮めたウィンドウ指定

 

スクリーンの消去

D2_ScreenClear

関数型 無し
引数 無し
スクリーンバッファの消去を行なう
スクリーンに転送するまでは反映されない

D2_ScreenClear();//スクリーンバッファの消去
D2_FixStringDraw(0,0,"Test");//文字列表示
pceLCDTrans();//スクリーンに転送

 

ウィンドウの消去

D2_WindowClear

関数型 無し
引数 無し
スクリーンバッファのウィンドウ領域の消去を行なう
スクリーンに転送するまでは反映されない

D2_WindowSet(10,10,20,20);//ウィンドウ領域の設定
D2_WindowClear();//ウィンドウ領域のの消去
pceLCDTrans();//スクリーンに転送

 

描画する色の指定

D2_SetDrawColor

関数型 無し
引数 int color

GMLで描画を行なう時の色を指定する
再度指定するまでは有効

D2_SetDrawColor(3);//黒を指定

 

消去する色の指定

D2_SetClearColor

関数型 無し
引数 int color
GMLで消去処理を行なう時の色を指定する
再度指定するまでは有効

D2_SetClearColor(0);//白で消去指定

 

αブレンドモードの指定

D2_SetAlphaMode

関数型 無し
引数 int mode
D2系描画処理のアルファブレンディングを指定する
0で無効、1が有効
再度指定するまでは有効

D2_SetAlphaMode(1); // αブレンディング有効
D2_SpriteDraw(); // スプライトの描画
D2_SetAlphaMode(0); // αブレンディング無効

 

ディザリングのモードセット

D2_SetDitherMode

関数型 無し
引数 int mode
D2系描画処理のディザリングを指定する
0で無効、1が有効
再度指定するまでは有効

D2_SetDitherMode(1); // αブレンディング有効
D2_PolygonShadeDraw(); // スプライトの描画
D2_SetDitherMode(0); // αブレンディング無効

 

単純図形

ピクセルの描画(ディスプレイ座標系)

D2_PixelDraw

関数型 無し
引数 int x, int y, int color
1ピクセル(ドット)を描画する
描画指定したディスプレイ座標が、描画ウィンドウの範囲の時に描画される
GML描画色を無視して描画が出来る

D2_PixelDraw(64, 44, 3);// 画面中央に黒ドットを描画

ピクセルの描画(ウィンドウ座標系)

D2_PixelDrawW

関数型 無し
引数 int x, int y, int color
1ピクセル(ドット)を描画する
描画指定したウィンドウ座標が、ウィンドウの範囲の時に描画される
GML描画色を無視して描画が出来る

D2_PixelDrawW(0,0,3);//ウィンドウの左上に黒ドットを描画

ピクセルの描画(ウィンドウ中央座標系)

D2_PixelDrawC

関数型 無し
引数 int x, int y, int color
1ピクセル(ドット)を描画する
描画指定したウィンドウ座標が、ウィンドウの範囲のときに描画される
gml描画色を無視してcolor値で描画が出来る

D2_PixelDrawC(0,0,3);//ウィンドウの中央に黒ドットを描画

 

縦ラインの描画(ディスプレイ座標系)

D2_VLineDraw

関数型 無し
引数 int pos
上から下まで垂直に線を描画する
posで指定したディスプレイX座標の位置でウィンドウの範囲内のみ描画される

D2_VLineDraw(127);//ディスプレイの右端のラインの描画

縦ラインの描画(ウィンドウ座標系)

D2_VLineDrawW

関数型 無し
引数 int pos
上から下まで垂直に線を描画する
posで指定したウィンドウX座標の位置でウィンドウの範囲内のみ描画される

D2_VLineDrawW(0);//ウィンドウの左端のラインの描画

縦ラインの描画(ウィンドウ中心座標系)

D2_VLineDrawC

関数型 無し
引数 int pos
上から下まで垂直に線を描画する
ウィンドウの中心からpos移動したX座標の位置でウィンドウの範囲内のみ描画される

D2_VLineDrawC(0);//ウィンドウの中心を通る垂直線の描画

 

横ラインの描画(ディスプレイ座標系)

D2_HLineDraw

関数型 無し
引数 int pos
水平線を描画する
posで指定したディスプレイ座標の位置でウィンドウ範囲内のみ描画する

D2_HLineDraw(87);//ディスプレイの下端のラインの描画

横ラインの描画(ウィンドウ座標系)

D2_HLineDrawW

関数型 無し
引数 int pos
水平線を描画する
posで指定したウィンドウ座標の位置でウィンドウ範囲内のみ描画する

D2_HLineDrawW(0);//ウィンドウの上端のラインの描画

横ラインの描画(ウィンドウ中央座標系)

D2_HLineDrawC

関数型 無し
引数 int pos
水平線を描画する
ウィンドウの中心からposだけ移動したY座標の位置でウィンドウの範囲内のみ描画する

D2_HLineDrawC(0);//ウィンドウの中心を通る水平線描画

 

ラインの描画(ディスプレイ座標系)

D2_LineDraw

関数型 無し
引数 int x1, y1, x2, y2
ディスプレイの(x1,y1)座標から(x2,y2)座標までのラインを描画する
ウィンドウやディスプレイの範囲を超えた部分はクリッピングされる

D2_LineDraw(0,87,127,0);//ディスプレイの左下から右上までのライン描画

ラインの描画(ウィンドウ座標系)

D2_LineDrawW

関数型 無し
引数 int x1, y1, x2, y2
ウィンドウの(x1, y1)座標から(x2, y2)座標までのラインを描画する
ウィンドウやディスプレイの範囲を超えた部分はクリッピングされる

D2_LineDrawW(0, 0, 20, 20);//ウィンドウの左上から右下(20,20)までライン描画

ラインの描画(ウィンドウ中央座標系)

D2_LineDrawC

関数型 無し
引数 int x1, y1, x2, y2
ウィンドウの中央を原点とした(x1, y1)座標から(x1, y2)座標までのラインを描画する
ウィンドウやディスプレイの範囲を超えた部分はクリッピングされる

D2_LineDrawC(-10, -10, 10, 10);//ウィンドウ中央を通る右下がりラインを描画

 

円の描画(ディスプレイ座標系)

D2_CircleDraw

関数型 無し
引数 int x, y, sx, sy

ディスプレイ座標(x, y)を中心とした横sxドット、縦syドットの円を描画する
ウィンドウやディスプレイの範囲を超えた部分はクリッピングされる

D2_CircleDraw(64, 44, 10, 10);//ディスプレイの中央に半径10ドットの円を描画

円の描画(ウィンドウ座標系)

D2_CircleDrawW

関数型 無し
引数 無し
ウィンドウ座標(x, y)を中心とした横sxドット、縦syドットの円を描画する
ウィンドウやディスプレイの範囲を超えた部分はクリッピングされる

D2_CircleDrawW(10, 10, 10, 10);//ウィンドウの左上に半径10ドットの円を描画

円の描画(ウィンドウ中央座標系)

D2_CircleDrawC

関数型 無し
引数 無し
ウィンドウ中央を原点とした座標(x, y)を中心とした横sxドット、縦syドットの円を描画する
ウィンドウやディスプレイの範囲を超えた部分はクリッピングされる

D2_CircleDrawC(0, 0, 10, 10);//ウィンドウの中央に半径10ドットの円を描画

 

スプライト

スプライトの指定

D2_SetSpriteChara

関数型 無し
引数 int chara

スプライトテーブルから描画するスプライトを指定する

D2_SetSpriteChara(96); // 96番めのスプライトを指定

 

スプライト描画座標の指定(ディスプレイ座標系)

D2_SetSpritePosition

関数型 無し
引数 int x, int y

スプライトを描画する座標を指定する

D2_SetSpritePosition(10, 20); // X座標10、Y座標20を指定

スプライト描画座標の指定(ウィンドウ座標系)

D2_SetSpritePositionW

関数型 無し
引数 int x, int y

スプライトを描画する座標を指定する

D2_SetSpritePositionW(10, 20); // X座標10、Y座標20を指定

スプライト描画座標の指定(ウィンドウ中央座標系)

D2_SetSpritePositionC

関数型 無し
引数 int x, int y

スプライトを描画する座標を指定する

D2_SetSpritePositionC(10, 20); // X座標10、Y座標20を指定

 

スプライト描画開始

D2_SpriteDraw

関数型 無し
引数 無し

設定されたスプライトを描画開始する。

※高度な指定方法(通常はスプライトと座標の指定関数で処理する)
以下の共有変数に格納された情報に従って描画を行う
D2_SpriteX,D2_SpriteY は描画開始座標
D2_SpriteXOffset, D2_SpriteYOffset はキャラクタのオフセット座標で、0の場合左上が描画開始座標に指定される。
座標とキャラクタの中心を合わせる時はスライドする座標を指定する必要がある
D2_SpriteWidth にはスプライトの幅
D2_SpriteHeight にはスプライトの高さをそれぞれ指定する
D2_SpriteDataMatrix にはスプライトの実データが格納されているポインタを指定する
D2_SpriteChara には通常スプライトテーブルナンバーが格納される
これらの手動指定を間違えた場合、最悪フリーズしてしまうので注意

D2_SetSpriteChara(96); // 96番めのスプライトを指定
D2_SetSpritePosition(10, 20); // X座標10、Y座標20を指定
D2_SpriteDraw(); // スプライトの描画開始

 

特殊描画

長方形の頂点座標の設定

D2_PosRad2Vertex

関数型 無し
引数 int width, int height, unsigned short rad

長方形の幅の半分width、高さの半分height、回転角度rad、から、スプライト座標を中心とした長方形の各頂点座標を設定する
※内部の共用変数
D2_SpriteVertexX[4],D2_SpriteVertexY[4]にそれぞれ格納される

D2_SetSpritePosition(64, 44);
D2_PosRad2Vertex(D2_SpriteWidth / 2, D2_SpriteHeight / 2, Rad); // スプライトと同じサイズの長方形の頂点座標を算出
D2_LineDraw( D2_SpriteVertexX[0], D2_SpriteVertexY[0], D2_SpriteVertexX[1], D2_SpriteVertexY[1]); // 長方形の辺のみ描画
D2_LineDraw( D2_SpriteVertexX[1], D2_SpriteVertexY[1], D2_SpriteVertexX[2], D2_SpriteVertexY[2]);
D2_LineDraw( D2_SpriteVertexX[2], D2_SpriteVertexY[2], D2_SpriteVertexX[3], D2_SpriteVertexY[3]);
D2_LineDraw( D2_SpriteVertexX[3], D2_SpriteVertexY[3], D2_SpriteVertexX[0], D2_SpriteVertexY[0]);

 

頂点変形スプライト描画開始

D2_SpriteStretchDraw

関数型 無し
引数 無し

設定されたスプライト情報と頂点情報を元に描画開始する。

※高度な指定方法(通常はスプライトと座標と頂点の指定関数で処理する)
通常のスプライトに加えてD2_SpriteVertexX[4],D2_SpriteVertexY[4]の頂点情報を元に描画される
頂点情報の変更で手動変形が可能
ただしアルゴリズムの関係上、凹形状は正常に描画されない事がある

D2_SetSpriteChara(96); // 96番めのスプライトを指定
D2_SetSpritePosition(10, 20); // X座標10、Y座標20を指定
D2_PosRad2Vertex(D2_SpriteWidth / 2, D2_SpriteHeight / 2, Rad); // 幅・高さ・角度Radから4頂点に変換
D2_SpriteStretchDraw(); // 頂点変形スプライトの描画

 

ポリゴン(多角形)の描画開始

D2_PolygonDraw

関数型 無し
引数 無し

設定された頂点情報を元に描画開始する。
頂点数D2_VertexNumber個の多角形として
頂点座標D2_SpriteVertexX[],D2_SpriteVertexY[]テーブル情報を元に描画する
ただしアルゴリズムの関係上、凹形状は正常に描画されない事がある

D2_SetSpritePosition(10, 20); // X座標10、Y座標20を指定
D2_PosRad2Vertex(20, 30, Rad); // 幅・高さ・角度Radから4頂点に変換
D2_VertexNumber = 4; // 4角形指定
D2_PolygonDraw(); // ポリゴンの描画

 

シェーディングポリゴン(多角形)の描画開始

D2_PolygonShadeDraw

関数型 無し
引数 無し

設定された頂点情報を元に描画開始する。
頂点数D2_VertexNumber個の多角形として
頂点座標D2_SpriteVertexX[],D2_SpriteVertexY[]テーブルと
頂点色D2_SpriteVertexC[]テーブル情報を元に描画する
色情報は0〜63までの多階調設定可能でディザリングモード時のみ有効になる
ディザリングモードがOFFの時は4階調に丸め込まれる
ただしアルゴリズムの関係上、凹形状は正常に描画されない事がある

D2_SetSpritePosition(10, 20); // X座標10、Y座標20を指定
D2_PosRad2Vertex(20, 30, Rad); // 幅・高さ・角度Radから4頂点に変換
D2_VertexNumber = 4; // 4角形指定
D2_SpriteVertexC[0] = 0.0 * 16;
D2_SpriteVertexC[1] = 3.9 * 16;
D2_SpriteVertexC[2] = 2.6 * 16;
D2_SpriteVertexC[3] = 2.3 * 16;
D2_PolygonShadeDraw(); // シェーディングポリゴンの描画

 

デバッグ支援

文字列の表示(ディスプレイ座標系)

D2_FixStringDraw

関数型 無し
引数 int x, y, char *str
ディスプレイ座標(x, y)からstr文字列を描画する
表示文字は半角英数文字(0x20〜0x7f)のみで、全角は表示出来ない

D2_FixStringDraw(20, 10, "Degug String");//デバッグ用文字列表示

文字列の表示(ウィンドウ座標系)

D2_FixStringDrawW

関数型 無し
引数 int x, y, char *str
ウィンドウ座標(x, y)からstr文字列を描画する
表示文字は半角英数文字(0x20〜0x7f)のみで、全角は表示出来ない

D2_FixStringDrawW(20, 10, "Degug String");//デバッグ用文字列表示

文字列の表示(ウィンドウ中央座標系)

D2_FixStringDrawC

関数型 無し
引数 int x, y, char *str
ウィンドウの中央を原点とした座標(x, y)からstr文字列を描画する
表示文字は半角英数文字(0x20〜0x7f)のみで、全角は表示出来ない

D2_FixStringDrawC(20, 10, "Degug String");//デバッグ用文字列表示

 

10進数の表示(ディスプレイ座標系)

D2_FixNumDraw

関数型 無し
引数 int x, y, num
ディスプレイ座標(x, y)からnumを10進数で描画する

D2_FixNumDraw(10, 20, 12345);//12345を表示

10進数の表示(ウィンドウ座標系)

D2_FixNumDrawW

関数型 無し
引数 int x, y, num
ウィンドウ座標(x,y)からnumを10進数で描画する

D2_FixNumDrawW(0,0, 98765);//98765を表示

10進数の表示(ウィンドウ中央座標系)

D2_FixNumDrawC

関数型 無し
引数 iny x, y, num
ウィンドウの中央を原点とした座標(x, y)から10進数で表示する

D2_FixNumDrawC(0,0, debugnum);//変数debugnumを10進数で表示

 

16進数の表示(ディスプレイ座標系)

D2_FixHexShortDraw

関数型 無し
引数 iny x, y, hex
ディスプレイ座標(x, y)から4桁の16進数で表示する

D2_FixHexShortDraw(0,0, debugnum);//変数debugnumを16進数で表示

16進数の表示(ウィンドウ座標系)

D2_FixHexShortDrawW

関数型 無し
引数 iny x, y, hex
ウィンドウ座標(x, y)から4桁の16進数で表示する

D2_FixHexShortDrawW(0,0, debugnum);//変数debugnumを16進数で表示

16進数の表示(ウィンドウ中央座標系)

D2_FixHexShortDrawC

関数型 無し
引数 iny x, y, hex
ウィンドウの中央を原点とした座標(x, y)から4桁の16進数で表示する

D2_FixHexShortDrawC(0,0, debugnum);//変数debugnumを16進数で表示

 

文字列と数字の表示(ディスプレイ座標系)

D2_FixStringNumDraw

関数型 無し
引数 int x, y, char *str, int num
ディスプレイ座標(x, y)からstr文字列とnum数値を描画する
表示文字は半角英数文字(0x20〜0x7f)のみで、全角は表示出来ない

D2_FixStringNumDraw(20, 10, "Degug String", DebugNum);//デバッグ用文字列と数値の表示

 

TOPに戻る

このページのコンテンツの著作権は放棄しません
またここのコンテンツを使用してのいかなる損害も保障いたしません
基本的にフリーソフト扱いですが、サポートやパッケージなどの要望がありましたらご連絡下さい