#include "stdafx.h"
#include <d3dx9.h>
#include "D3DQuickLib.h"
CD3DEnv *g_pD3DEnv = NULL; // D3DQuickLib が提供する描画環境。
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
CBillboard *g_pBillboard = NULL;
float g_fTime = 0;
//------------------------------------------------------------
// Name: FrameMove
// Desc: アニメーションを行う。
// UpdateScene 関数(d3dmain.cpp) からコールバックされる。
//------------------------------------------------------------
void FrameMove(float timeElapsed)
{
g_fTime += timeElapsed;
if (g_fTime > 600.0f)
g_fTime -= 600.0f;
D3DXVECTOR3 vecMin, vecMax, vecPos;
}
//------------------------------------------------------------
// Name: RenderScene
// Desc: レンダリングを行う。
// UpdateScene 関数(d3dmain.cpp) からコールバックされる。
//------------------------------------------------------------
void RenderScene(LPDIRECT3DDEVICE9 lpd3ddev)
{
D3DXMATRIX matWorld;
D3DXMatrixTranslation(&matWorld,0.0f,sinf((D3DX_PI /60.0f)* g_fTime),0.0f);
lpd3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE,FALSE);
lpd3ddev->SetRenderState(D3DRS_LIGHTING, FALSE );
lpd3ddev->SetTransform( D3DTS_WORLD, &matWorld );
lpd3ddev->SetRenderState(D3DRS_ZENABLE, FALSE );
g_pBillboard->Render(lpd3ddev,&matWorld,g_pD3DEnv->GetSystemView(),0.0f,2.0f,0);
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "Game";
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wcex);
HWND hWnd;
hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,wcex.lpszClassName,"Game",
WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
CW_USEDEFAULT,0,640,480,NULL,NULL,hInstance,NULL);
if( !hWnd )
return FALSE;
RECT bounds,client;
GetWindowRect(hWnd,&bounds);
GetClientRect(hWnd,&client);
MoveWindow(hWnd,bounds.left,bounds.top,
640 * 2 - client.right,
480 * 2 - client.bottom,
false );
ShowWindow( hWnd, nCmdShow );
UpdateWindow( hWnd );
g_pD3DEnv = new CD3DEnv();
g_pD3DEnv = new CD3DEnv();
if (FAILED(g_pD3DEnv->InitD3D(hWnd))){
DestroyWindow(hWnd);
}else{
// グラフィックスの読み込み
g_pBillboard = new CBillboard(g_pD3DEnv,1);
g_pBillboard->SetTexture(0,"billboards\\smile.dds");
// デバイスへグラフィックスデータを転送
g_pD3DEnv->ReloadGraphics();
}
MSG msg;
while(true){
if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)){
if(msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
g_pD3DEnv->UpdateScene(FrameMove,RenderScene);
}
}
// D3DQuickLib の終了
SAFE_DELETE(g_pBillboard);
SAFE_DELETE(g_pD3DEnv);
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch (message){
case WM_SIZE:
// ウインドウが最大化されたら、フルスクリーンモードにする。
if (SIZE_MAXIMIZED == wParam){
if (g_pD3DEnv->IsWindowed())
g_pD3DEnv->ToggleFullscreen();
}
break;
case WM_SETCURSOR:
// フルスクリーン時はカーソルを表示させない。
if (g_pD3DEnv->IsWindowed())
::SetCursor(::LoadCursor(NULL,IDC_ARROW));
else
::SetCursor(NULL);
break;
case WM_SYSCHAR:
// Alt-Enter でフルスクリーンモードへ切り替える
if (lParam&0x20000000){
if (wParam == '\x0d'){
g_pD3DEnv->ToggleFullscreen();
break;
}
}
return DefWindowProc( hWnd, message, wParam, lParam );
case WM_SYSCOMMAND:
if (!g_pD3DEnv->IsWindowed()){ // フルスクリーン時
if (wParam != SC_CLOSE)
break;
// Windowが閉じられる前にWindowモードに戻しておく。
g_pD3DEnv->ToggleFullscreen();
Sleep(100);
}
return DefWindowProc( hWnd, message, wParam, lParam );
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
|
【ステップ1 プロジェクトを開く】 | 解説 |
|
チュートリアル1の時と同様にプロジェクトのフォルダを開きます。
すると、画面は左図のようになったはずです。 ここで、「Debug」フォルダを開きます。 |
|
図1 フォルダ Game | |
|
【ステップ2 Debug フォルダにデータを保存1】 | 解説 |
|
すると、画面は左図のようになったはずです。
ここに画像データを置きます。 データをダウンロードして、 このフォルダに保存して下さい。 |
|
図2 フォルダ Debug | |
|
【ステップ3 Debug フォルダにデータを保存2】 | 解説 |
|
すると、画面は左図のようになったはずです。 これでデータが設置されました。 確認の為、「Billboards」フォルダを開いてみてください。 |
|
図3 フォルダ Debug | |
|
【ステップ4 Billboards フォルダ】 | 解説 |
|
左図のようになれば完成です。 これでデータが設置されました。 コンパイルして実行してみましょう。 |
|
図4 フォルダ Billboards | |