【Direct3D の終了について】

ここでは、"d3dmain.cpp "内のReleaseD3D 関数について、解説を行う事にする。
void	ReleaseD3D()
{
	InvalidateDeviceObjects();
	DeleteDeviceObjects();
	if (g_lpD3DDEV){
		g_lpD3DDEV->Release();
		g_lpD3DDEV = NULL;
	}
	if (g_lpDevices){
		delete	g_lpDevices;
		g_lpDevices = NULL;
	}
	if (g_lpD3D){
		g_lpD3D->Release();
		g_lpD3D = NULL;
	}
}


最初の関数呼び出し。

は、RestoreDeviceObjects();の逆の処理を行う関数である。
つまり、デバイス使用権に依存したオブジェクト(主にテクスチャ)のデバイスからの消去である。

現在の所、具体的には、以下の処理を行っている。

HRESULT	InvalidateDeviceObjects()
{
	return	S_OK;
}

つまり、何もしていない。 テクスチャーを用意していないのだから、当然である。



続いて、次の関数呼び出し。

は、InitDeviceObjects();の逆の処理を行う関数である。
つまり、デバイス使用権に依存したオブジェクトのデータのメモリ上からの消去である。

現在の所、具体的には、以下の処理を行っている。

HRESULT	DeleteDeviceObjects()
{
	return	S_OK;
}

つまり、何もしていない。
プレーヤも敵キャラも何も用意していないのだから、当然である。

なら、こんな処理いらないぢゃん。
と思うかも知れないが、プレーヤや敵キャラを置くようになれば、絶対に必要になるので、
今のうちに用意しておく。


次の部分。

	if (g_lpD3DDEV){
		g_lpD3DDEV->Release();
		g_lpD3DDEV = NULL;
	}

ここでは、Direct3D API 関数。CreateDevice() で作成した、Direct3D デバイスの使用 を終了させ開放している。



次の部分。

	if (g_lpDevices){
		delete	g_lpDevices;
		g_lpDevices = NULL;
	}

ここでは、デバイスの作成に使用した、デバイス情報 CDeviceInformation 型クラスの開放を行っている。


最後の部分。

	if (g_lpD3D){
		g_lpD3D->Release();
		g_lpD3D = NULL;
	}

ここでは、Direct3D API 関数。Direct3DCreate() で作成した、Direct3D オブジェクトの使用 を終了させ開放している。

以上で、Direct3D の終了処理は終了。