本章では画像を表示してみましょう。
DXライブラリでは圧縮された画像であろうともたった一行関数を書くだけで表示できます。
先ほどのプログラムの中心に、画像を描画する為の関数である
LoadGraphScreen関数 を挿入し、画像を表示してみましょう。
先にプログラムコードと実行結果をお見せします。
#include "DxLib.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ DxLib_Init(); // DXライブラリ初期化処理 LoadGraphScreen( 50, 100, "画像/キャラクタ00.png", TRUE ); // 画像を描画する WaitKey(); // キー入力待ち DxLib_End(); // DXライブラリ終了処理 return 0; }
実行結果
少し話がそれますが、DXライブラリ本家のHPには関数リファレンスが充実しています。
DXライブラリを学ぶ上でリファレンスを確認することは必要不可欠なことです。
そこで、当サイトで新しい関数を紹介する時は、本家リファレンスと合わせて紹介し、リファレンスの見方も紹介します。
ではまず、今回使用する LoadGraphScreen関数 のリファレンスを確認してみましょう。
宣言 | int LoadGraphScreen( int x , int y , char *GraphName
, int TransFlag ) ; |
概略 | 画像ファイルを読みこんで画面に表示する |
引数 | x ,
y : ロードした画像を描画する矩形の左上頂点の座標 GraphName : ロードする画像パスの文字列があるポインタ TransFlag : 透過色を入れるか、のフラグ。TRUEで透過色有効になる (逆はFALSE) |
このように書かれています。
関数の第一引数、第二引数は x,y座標 を渡します。
表示したウィンドウは、左上の座標が(0,0)となり、大きさは640x480となります。
学校で習う座標は左下が原点ですから、少し違和感があるかもしれません。
yの値は下に行くほど増えていくことに注意して下さい。
今回のサンプルで表示した画像である「画像/キャラクタ00.png」は「画像」フォルダの中にある「キャラクタ00.png」というファイルですので
これです。この画像を(50,100)の位置に描画したので実行結果のようになりました。
指定した位置が画像の左上になることを覚えておいてください。
関数の第三引数にはこの画像のファイル名を渡します。
今回「画像/キャラクタ00.png」というファイルパスですから "画像/キャラクタ00.png" を渡しています。
第四引数は特に気にしなくて良いです。
透過色を設定した時や画像そのものに透過処理を施した時、画像透過部分を透過させるかさせないかというフラグを意味しますが、
これは後から説明しますので、とりあえずいつも TRUE(透過する) にして下さい。
現在はまだ透過色の設定をしていないので、TRUEにしてもFALSEにしても結果は変わりません。
こうして、画像をウィンドウに表示することが出来ましたね。
しかし・・・!
ここまで読んで下さった方には申し訳ないですが、LoadGraphScreenという関数はテスト時以外には使用しないで下さい。
何故かというと・・・。
画像ファイルなどのデータってどこに保存されているかご存知でしょうか。
普段は「ハードディスクドライブ」に保存されています。
先ほどの関数で、画像をディスプレイに表示するまでには、ハードディスクから画像を読み込んでメモリに展開し、
CPUで計算してディスプレイに表示する流れになっています。(本当はVRAM等を通りますがここでは略)
しかし、ハードディスクはとても通信が遅いので、画像を表示する度にハードディスクから読み込んでいたら大変低速になってしまいます。
そこで、予めハードディスクからメモリに画像をロードしておき、画像を表示する時は、メモリに既に展開済みのデータを表示するようにすると...
ハードディスクからのロードは最初の一度だけでよく、後はメモリからデータを拾うので高速に処理出来るようになります。
ゲーム中はこの仕組みを利用しなければなりません。
よく、ゲーム中に「NowLoading」のような画面が出ると思いますが、これはハードディスクからメモリにデータを展開しているのです。
(違う場合もありますが、今回は省略します)
それなら最初からメモリにデータを全て展開しておけば良いと思うかもしれませんが、
メモリは電源を切るとデータが消えてしまい、高速にアクセスできる代わりに多くのデータは保持できない特徴があります。
その為、その時必要な分だけロードする仕組みが必要なのです。
では次の章でこの仕組みを利用した描画を行ってみましょう。
- Remical Soft -