DirectX講座6回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
今回は描画する前準備をします
つまらないですが、必須の処理になります
まず、DirectXをプロジェクトで使えるようにします
プロパティマネージャを表示します
&ref(prop1.jpg);
新規のプロパティシートを追加します
&ref(prop2.jpg);
名前を決めて追加します
&ref(prop3.jpg);
追加したプロパティシートをダブルクリックします
&ref(prop4.jpg);
「C/C++」→「全般」→「追加のインクルードディレクトリ」をク...
C:\Program Files\Microsoft DirectX SDK (June 2010)\Include
ディレクトリを選択し、インクルードディレクトリのパスをセ...
&ref(prop5.jpg);
「リンカー」→「全般」→「追加のライブラリディレクトリ」を...
C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x86
ディレクトリを選択し、ライブラリディレクトリのパスをセッ...
&ref(prop6.jpg);
追加し終わったら「OK」を押してプロパティシートを閉じてく...
これで設定完了です
次回からは今回作成したプロパティシートをコピーして
プロジェクトに追加するだけでDirectXを使う設定ができます
------------------------------------------------------
SIZE(20){ COLOR(#ffaa00){今回も描画処理の本質部分でないの...
今回使うファイルは次のようになってます。どぞー(-ω-)つ旦
・&ref(direct3d.cpp);
zipでほしい人はこちら
・&ref(direct3d.zip);
////////////////////////////////////////////
// Direct3Dに必要なヘッダーとライブラリ
#define D3D_DEBUG_INFO // Direct3Dデバックフラグ
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "d3dxof.lib")
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "winmm.lib")
#include <comdef.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <mmsystem.h>
//////////////////////////////////////////////
#include <Windows.h>
#include <tchar.h>
// ウィンドウプロシージャ、ウィンドウに対するメッセージ...
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
switch(msg){
// ウィンドウが破棄されたとき
case WM_DESTROY:
PostQuitMessage(0); // WM_QUITメッセージをメッセージキ...
return 0;
}
// デフォルトのメッセージ処理を行う
return DefWindowProc(hWnd, msg, wParam, lParam);
}
// WinMain関数(アプリケーションの開始関数)
// コンソールアプリケーションと違い、コンソールを開かない
int _stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrev...
{
const TCHAR* WC_BASIC = _T("BASIC_WINDOW");
// シンプルウィンドウクラス設定
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_VR...
(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION),...
(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMAG...
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , N...
// シンプルウィンドウクラス作成
if(!RegisterClassEx(&wcex))
return false;
// ウィンドウ幅、高さはディスプレイに依存する。普通は4:3
const int WINDOW_WIDTH = 640;
const int WINDOW_HEIGHT = 480;
// ウィンドウの作成
HWND hWnd = CreateWindowEx(0,WC_BASIC,
_T("Application"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDRE...
CW_USEDEFAULT,CW_USEDEFAULT,WINDOW_WIDTH,WINDOW_HEIGHT,...
////////////////////////////////////////////////////////...
// Direct3Dの初期化
IDirect3D9* pD3D9 = NULL; // Direct3Dデバイス生成用オ...
IDirect3DDevice9* pDevice3D = NULL; // Direct3Dのデバイス
// Direct3D9オブジェクトの作成
pD3D9 = Direct3DCreate9(D3D_SDK_VERSION);
// ディスプレイ情報取得
D3DDISPLAYMODE Display;
pD3D9->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Displ...
D3DPRESENT_PARAMETERS D3DParam = { // スワップチェイン...
WINDOW_WIDTH,WINDOW_HEIGHT,Display.Format,1,D3DMULTISAM...
D3DSWAPEFFECT_DISCARD,hWnd,TRUE,TRUE,D3DFMT_D24S8,0,0,D...
};
// HALモードで3Dデバイス作成
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEV...
D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITH...
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDE...
D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_MULTITHREA...
// REFモードで3Dデバイス作成
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDE...
D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITH...
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDE...
D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITH...
{
// 3Dデバイス作成失敗
pD3D9->Release();
return -1;
}
////////////////////////////////////////////////////////...
// メッセージループ
MSG msg = {};
while(msg.message != WM_QUIT) {
// アプリケーションに送られてくるメッセージをメッセージ...
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
DispatchMessage(&msg); // アプリケーションの各ウィンド...
}
// メッセージ処理をしていないとき
else{
//(ここにDirectXの処理を書く)
////////////////////////////////////////////////////////...
// 描画開始
if(SUCCEEDED(pDevice3D->BeginScene()))
{
DWORD ClearColor = 0xff808080; // 背景クリア色
// 背景クリア
pDevice3D->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR...
// 描画終了
pDevice3D->EndScene();
}
// 描画反映
pDevice3D->Present( NULL, NULL, NULL, NULL );
////////////////////////////////////////////////////////...
}
}
////////////////////////////////////////////////////////...
// DirectXの変数は必ず後処理をすること
pDevice3D->Release();
pD3D9->Release();
////////////////////////////////////////////////////////...
return 0;
}
今回の実行結果は次のようになります
描画デバイスを用いて画面を灰色で塗りつぶしました
&ref(device.jpg);
今回はDirect3Dの初期化を行いました
非常に重要で必要な処理ですが、このまま使いまわしすること...
少なくともこの講座では、この部分を書き換えることはしません
描画デバイスが作成できたら、後は描画デバイスを使って描画...
次回はやっと画像を描画してみます
前:DirectX講座5回
次:DirectX講座7回
|ヒュー!|25|
|お許しください!|13|
|特に意味はない|5|
終了行:
今回は描画する前準備をします
つまらないですが、必須の処理になります
まず、DirectXをプロジェクトで使えるようにします
プロパティマネージャを表示します
&ref(prop1.jpg);
新規のプロパティシートを追加します
&ref(prop2.jpg);
名前を決めて追加します
&ref(prop3.jpg);
追加したプロパティシートをダブルクリックします
&ref(prop4.jpg);
「C/C++」→「全般」→「追加のインクルードディレクトリ」をク...
C:\Program Files\Microsoft DirectX SDK (June 2010)\Include
ディレクトリを選択し、インクルードディレクトリのパスをセ...
&ref(prop5.jpg);
「リンカー」→「全般」→「追加のライブラリディレクトリ」を...
C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x86
ディレクトリを選択し、ライブラリディレクトリのパスをセッ...
&ref(prop6.jpg);
追加し終わったら「OK」を押してプロパティシートを閉じてく...
これで設定完了です
次回からは今回作成したプロパティシートをコピーして
プロジェクトに追加するだけでDirectXを使う設定ができます
------------------------------------------------------
SIZE(20){ COLOR(#ffaa00){今回も描画処理の本質部分でないの...
今回使うファイルは次のようになってます。どぞー(-ω-)つ旦
・&ref(direct3d.cpp);
zipでほしい人はこちら
・&ref(direct3d.zip);
////////////////////////////////////////////
// Direct3Dに必要なヘッダーとライブラリ
#define D3D_DEBUG_INFO // Direct3Dデバックフラグ
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "d3dxof.lib")
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "winmm.lib")
#include <comdef.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <mmsystem.h>
//////////////////////////////////////////////
#include <Windows.h>
#include <tchar.h>
// ウィンドウプロシージャ、ウィンドウに対するメッセージ...
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
switch(msg){
// ウィンドウが破棄されたとき
case WM_DESTROY:
PostQuitMessage(0); // WM_QUITメッセージをメッセージキ...
return 0;
}
// デフォルトのメッセージ処理を行う
return DefWindowProc(hWnd, msg, wParam, lParam);
}
// WinMain関数(アプリケーションの開始関数)
// コンソールアプリケーションと違い、コンソールを開かない
int _stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrev...
{
const TCHAR* WC_BASIC = _T("BASIC_WINDOW");
// シンプルウィンドウクラス設定
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_VR...
(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION),...
(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMAG...
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , N...
// シンプルウィンドウクラス作成
if(!RegisterClassEx(&wcex))
return false;
// ウィンドウ幅、高さはディスプレイに依存する。普通は4:3
const int WINDOW_WIDTH = 640;
const int WINDOW_HEIGHT = 480;
// ウィンドウの作成
HWND hWnd = CreateWindowEx(0,WC_BASIC,
_T("Application"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDRE...
CW_USEDEFAULT,CW_USEDEFAULT,WINDOW_WIDTH,WINDOW_HEIGHT,...
////////////////////////////////////////////////////////...
// Direct3Dの初期化
IDirect3D9* pD3D9 = NULL; // Direct3Dデバイス生成用オ...
IDirect3DDevice9* pDevice3D = NULL; // Direct3Dのデバイス
// Direct3D9オブジェクトの作成
pD3D9 = Direct3DCreate9(D3D_SDK_VERSION);
// ディスプレイ情報取得
D3DDISPLAYMODE Display;
pD3D9->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Displ...
D3DPRESENT_PARAMETERS D3DParam = { // スワップチェイン...
WINDOW_WIDTH,WINDOW_HEIGHT,Display.Format,1,D3DMULTISAM...
D3DSWAPEFFECT_DISCARD,hWnd,TRUE,TRUE,D3DFMT_D24S8,0,0,D...
};
// HALモードで3Dデバイス作成
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEV...
D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITH...
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDE...
D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_MULTITHREA...
// REFモードで3Dデバイス作成
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDE...
D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITH...
if (FAILED(pD3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDE...
D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITH...
{
// 3Dデバイス作成失敗
pD3D9->Release();
return -1;
}
////////////////////////////////////////////////////////...
// メッセージループ
MSG msg = {};
while(msg.message != WM_QUIT) {
// アプリケーションに送られてくるメッセージをメッセージ...
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
DispatchMessage(&msg); // アプリケーションの各ウィンド...
}
// メッセージ処理をしていないとき
else{
//(ここにDirectXの処理を書く)
////////////////////////////////////////////////////////...
// 描画開始
if(SUCCEEDED(pDevice3D->BeginScene()))
{
DWORD ClearColor = 0xff808080; // 背景クリア色
// 背景クリア
pDevice3D->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR...
// 描画終了
pDevice3D->EndScene();
}
// 描画反映
pDevice3D->Present( NULL, NULL, NULL, NULL );
////////////////////////////////////////////////////////...
}
}
////////////////////////////////////////////////////////...
// DirectXの変数は必ず後処理をすること
pDevice3D->Release();
pD3D9->Release();
////////////////////////////////////////////////////////...
return 0;
}
今回の実行結果は次のようになります
描画デバイスを用いて画面を灰色で塗りつぶしました
&ref(device.jpg);
今回はDirect3Dの初期化を行いました
非常に重要で必要な処理ですが、このまま使いまわしすること...
少なくともこの講座では、この部分を書き換えることはしません
描画デバイスが作成できたら、後は描画デバイスを使って描画...
次回はやっと画像を描画してみます
前:DirectX講座5回
次:DirectX講座7回
|ヒュー!|25|
|お許しください!|13|
|特に意味はない|5|
ページ名: