2018年02月15日

LGP講座(かり~第6回 グラフィック処理の初歩を学ぼう!

yuu_bustup.jpg
優:こ、こんにちわ……柊 優です……。今月もよろしくね……

haruka_bustup.jpg
陽香:永乃原 陽香です。 よろしくお願いします。

airi_bustup.jpg
愛梨:結城 愛梨でーす。 今月もよろしくねっ

yuu_bustup.jpg
さて……今回からは、いよいよグラフィックの扱いについて説明していくよ……

airi_bustup.jpg
わーいっ。楽しみ楽しみーっ。

haruka_bustup.jpg
それでは、今回もがんばっていきましょう。

~まずは打ち込んで実行して

yuu_bustup.jpg
さて……まずは、LGPのホームページに載ってる、グラフィック表示のサンプルプログラムを実行してみようか……。
これが、そのサンプルプログラムだよ……

-------------------------------------------------------
CH = G@SETUP( 640 , 480 , 16 , 1 ) //画面初期化
BM = G@CHRLOAD( "TEST.BMP" ) //画像読み込み
G@CHRCOPY( BM , CH ) //画像を画面にコピー
G@FLIP( ) //フリップ
LOOP
 S@WAIT( ) //システムウェイト
ENDLOOP
-------------------------------------------------------

airi_bustup.jpg
うーん、よくわからないー

haruka_bustup.jpg
まぁ、このプログラムの意味は、あとで勉強することにして、まずはこれを実行してみましょう。

lg01.JPG
※クリックすると、元の大きさで表示されます

airi_bustup.jpg
あたしたちの画像が表示されたよっ! 7行のプログラムで、画像が表示されるなんてすごいなー

haruka_bustup.jpg
これが、LGPのすごさなんですよ。
では、次から、先ほどのプログラムの内容について、勉強していきましょうね。

airi_bustup.jpg
はーいっ。

~グラフィックのショ理のショ歩はたったの四行?

yuu_bustup.jpg
では、まず、先ほどのプログラムをもう一度見てみようか……

-------------------------------------------------------
CH = G@SETUP( 640 , 480 , 16 , 1 ) //画面初期化
BM = G@CHRLOAD( "TEST.BMP" ) //画像読み込み
G@CHRCOPY( BM , CH ) //画像を画面にコピー
G@FLIP( ) //フリップ
LOOP
 S@WAIT( ) //システムウェイト
ENDLOOP
-------------------------------------------------------

yuu_bustup.jpg
さっき、愛梨はたった七行で画像が表示できてすごいって感動してたけど、実は、最後の三行は、ウィンドウを表示し続けるためのおまじないのようなもので、実際に画像を表示させるのは、たった四行だけなんだ……

airi_bustup.jpg
ええええ、そうなの!?

haruka_bustup.jpg
はい。たった四行で画像を表示させることができるんですから、LGPは本当にすごいですよね。
では、その四行を、順に勉強していきましょうか。まずは、これからです。

-----------------------------------
CH = G@SETUP( 640 , 480 , 16 , 1 )
-----------------------------------

yuu_bustup.jpg
このG@SETUP関数は一言で言えば、グラフィックを描く画面(これをLGPではサーフェスというよ)の初期設定をする関数なんだ……。
これを実行すると、その初期設定をしたサーフェスの番号が返ってくるよ。 その番号を、変数に入れてるわけだね……。

airi_bustup.jpg
なるほどなるほど。 それで、かっこの中の値は、どんな意味なの?

haruka_bustup.jpg
最初の二つ(640,480)は、サーフェスのサイズ、その次(16)は、色のビットサイズですよ。

airi_bustup.jpg
あのー……ビットサイズって何かな?

yuu_bustup.jpg
ビットサイズというのは、画像の色の種類の多さを表す値で、基本的には、16ビット、24ビット、32ビットの三種類があるよ。
もちろん、大きいほうが、たくさんの色を扱えて、結果、画像が鮮やかになるんだ……。

airi_bustup.jpg
ふむふむ、なるほどー……

haruka_bustup.jpg
そして最後の数字は、フルスクリーンモードか、ウィンドウモードかを表すものです。0がフルスクリーンモード、1がウィンドウモードですよ。

yuu_bustup.jpg
それじゃ、次に行くよ……

------------------------------
BM = G@CHRLOAD( "TEST.BMP" )
------------------------------

haruka_bustup.jpg
ここで登場しているG@CHRLOAD関数は、画像ファイルを読み込む命令です。
読み込まれた画像は、キャラクタという単位で管理されていて、関数の戻り値として、そのキャラクタの番号が返ってきます。

airi_bustup.jpg
つまり、画像を読み込む際は、このG@CHRLOAD関数を使えばいいわけだねっ。

yuu_bustup.jpg
うん、そうだよ……。 そして次に進むね……

----------------------
G@CHRCOPY( BM , CH )
----------------------

yuu_bustup.jpg
このG@CHRCOPY関数は、指定したキャラクタを、指定したサーフェスにコピーする関数なんだ……。

haruka_bustup.jpg
最初の引数は、コピー先のサーフェスの番号、最後の引数は、コピーするキャラクターの番号が入ります。

airi_bustup.jpg
そうかー。G@SETUPやG@CHRLOADの戻り値をここで使うんだねっ。

yuu_bustup.jpg
うん、そういうことだね……。そして最後……

---------------
G@FLIP( )
---------------

yuu_bustup.jpg
これは、描画画面と表示画面とを切り替える関数だよ……

airi_bustup.jpg
描画画面? 表示画面?

haruka_bustup.jpg
はい。ディスプレイにいちいち書いてたら、画面がちらついたりして大変ですよね。そこで、表示させる画面と、絵を描く画面とを分離して、絵を描き終わったら、それを表示させるというかたちをとっているんです。
これを、専門用語で、『ダブル・バッファリング』というんですよ。

airi_bustup.jpg
なるほどー

yuu_bustup.jpg
では、ここまでのことをまとめてみるよ……

(1)G@SETUP関数で、サーフェスの初期設定を行う
(2)G@CHRLOAD関数で、画像を読み込む
(3)G@CHRCOPY関数で、読み込んだ画像を、サーフェスにコピーする
(4)G@FLIP関数で、描画画面と表示画面を切り替える

yuu_bustup.jpg
これが、LGPでのグラフィック処理の基本だよ……

airi_bustup.jpg
はーい、わかりましたー

haruka_bustup.jpg
次回も、グラフィック処理について勉強していきますよ。楽しみにしててくださいね。

yuu_bustup.jpg
それでは、また次回……またね……

airi_bustup.jpg
またね~

※次の更新は、2月19日、フリーゲーム情報の予定です。お楽しみに!
posted by 裏編 at 09:52| LGP講座(かり | 更新情報をチェックする