>> ゲームプログラミング入門トップに戻る

メモリに読み込んだ画像データを削除する

今回はメモリに読み込んだ画像データを削除する方法について説明します。

音声データの時もメモリに読み込んだデータを削除する関数がありましたが、
画像データの場合にも専用の関数があります。
関数は、DeleteGraph関数とInitGraph関数があります。
DeleteGraph関数は引数にグラフィックハンドルを指定し、特定の画像データを削除する関数です。
InitGraph関数は引数はなしで、メモリに読み込んだ画像データをまとめて削除する関数です。

以下にサンプルコードを示します。

#include "DxLib.h"

#define PI	3.1415926535897932384626433832795f

// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE);

	if( DxLib_Init() == -1 )		// DXライブラリ初期化処理
	{
		return -1 ;			// エラーが起きたら直ちに終了
	}

	//キー取得用配列
	char key[256];

	//x座標
	int x=300,y=360,y_prev=0,y_temp=0;

	//ジャンプしてるかのフラグ。
	bool jflag=false;



	//グラフィックハンドル
	int gh=LoadGraph("char.png");



	while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){

		//通常描画
		DrawGraph(10,10,gh,TRUE);

		
		if(key[KEY_INPUT_ESCAPE]==1){

			break;
		}
		
	}

	//特定の画像データを削除する場合はDeleteGraph
	DeleteGraph(gh);

	//まとめて削除する場合はInitGraph
	//InitGraph();

	DxLib_End() ;				// DXライブラリ使用の終了処理

	return 0 ;				// ソフトの終了 
}

上記のコードはただ終了時に画像データを削除しているだけですので意味はありません。
この関数でいちいち削除しなくても、自動的にプログラム終了時にすべて削除されるからです。。

この関数の使いどころとしては、ステージ1からステージ2に移動する時に、
ステージ1の画像データはもう必要ないからメモリから削除したい!っていう時によく使います。
いつまでもメモリに読み込んだままにしておくと、リソースの無駄ですからね。

今回の説明は以上です。

>> 【単純に音声を鳴らす】に進む
>> ゲームプログラミング入門トップに戻る