資源簡介
D3D11繪圖基礎,實現一個簡單的場景:旋轉的彩色立方體的源代碼。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“Timer.h“
using?namespace?std;
//定義頂點結構
//在這個程序當中,我們只需要頂點坐標及顏色值
struct?Vertex
{
XMFLOAT3 pos;
XMFLOAT4 color;
};
//定義幾個常見的顏色值,方便在程序中使用
//這里用到XMVECTORF32結構,在定義常量的XMVECTOR時使用,用它可以在創建變量時直接初始化且可以轉化為XMVECTOR。
//如果對XMVECTORF32有疑問,可以參考我的前幾篇博文:【D3D11游戲編程】學習筆記二:XNAMath之XMVECTOR。
const?XMVECTORF32?White?????=?{1.0f?1.0f?1.0f?1.0f};
const?XMVECTORF32?Black?????=?{0.0f?0.0f?0.0f?1.0f};
const?XMVECTORF32?Red???????=?{1.0f?0.0f?0.0f?1.0f};
const?XMVECTORF32?Green?????=?{0.0f?1.0f?0.0f?1.0f};
const?XMVECTORF32?Blue??????=?{0.0f?0.0f?1.0f?1.0f};
const?XMVECTORF32?Yellow????=?{1.0f?1.0f?0.0f?1.0f};
const?XMVECTORF32?Cyan??????=?{0.0f?1.0f?1.0f?1.0f};
const?XMVECTORF32?Magenta???=?{1.0f?0.0f?1.0f?1.0f};
const?XMVECTORF32?Silver =?{0.75f0.75f0.75f1.0f};
//重要的全局變量
//在后面學習過程中,這些全局將作為框架類的成員變量存在
HINSTANCE g_hInstance(NULL);
HWND g_hWnd(NULL);
wstring g_clsName(L“d3d11“);
wstring g_wndtitle(L“D3D11繪圖基礎:旋轉的彩色立方體“);
UINT g_winWidth(640);
UINT g_winHeight(480);
//定時器
Timer g_timer;
//幀率
size_t g_frameRate;
//D3D11基礎全局變量
ID3D11Device *g_device(NULL);
ID3D11DeviceContext *g_deviceContext(NULL);
IDXGISwapChain *g_swapChain(NULL);
ID3D11DepthStencilView *g_depthStencilView(NULL);
ID3D11RenderTargetView *g_renderTargetView(NULL);
//D3D11應用全局變量
ID3D11InputLayout *g_inputLayout(NULL);
ID3D11Buffer *g_VB(NULL);
ID3D11Buffer *g_IB(NULL);
ID3DX11Effect *g_effect(NULL);
ID3DX11EffectMatrixVariable *g_fxWorldViewProj(NULL);
//初始化
BOOL?InitWin32();
//初始化D3D
BOOL?InitD3D();
//應用初始化
BOOL?InitApp();
//場景更新
void?Update(float?delta);
//場景繪制
void?Render();
//主循環
int ?Run();
//計算幀率
void?CalculateFPS();
//回收資源
void?Release();
LRESULT?CALLBACK?WinProc(HWND?hwnd?UINT?msg?WPARAM?wParam?LPARAM?lParam);
//程序入口
int?WINAPI?WinMain(HINSTANCE?hInstance?HINSTANCE?hPrevInstance?LPSTR?cmdLine?int?cmdShow)
{
g_hInstance?=?hInstance;
if(!InitWin32())
return?-1;
if(!InitD3D())
return?-1;
if(!InitApp())
return?-1;
return?Run();
}
BOOL?InitWin32()
{
//創建窗口類
WNDCLASS?wndcls;
wndcls.cbClsExtra?=?0;
wndcls.cbWndExtra?=?0;
wndcls.hbrBackground?=?(HBRUSH)GetStockobject(NULL_BRUSH);
wndcls.hCursor?=?LoadCursor(NULLIDC_ARROW);
wndcls.hIcon?=?LoadIcon(NULLIDI_APPLICATION);
wndcls.hInstance?=?g_hInstance;
wndcls.lpfnWndProc?=?WinProc;
wndcls.lpszClassName?=?g_clsName.c_str();
wndcls.lpszMenuName?=?NULL;
wndcls.style?=?CS_HREDRAW?|?CS_VREDRAW;
//注冊窗口類
if(!RegisterClass(&wndcls))
{
MessageBox(NULLL“窗口注冊失敗!“L“錯誤“MB_OK);
return?FALSE;
}
//創建窗口
g_hWnd?=?CreateWindow(g_clsName.c_str()
g_wndtitle.c_str()
WS_OVERLAPPEDWINDOW
? CW_USEDEFAULTCW_USEDEFAULT
g_winWidthg_winHeight
NULL
NULL
g_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-12-16?05:04??BasicDraw\
?????文件??????240640??2012-12-16?04:56??BasicDraw\代碼及可執行文件(64位)\basicDraw.exe
?????文件?????????908??2012-12-13?21:41??BasicDraw\代碼及可執行文件(64位)\Timer.h
?????文件????????2458??2012-12-13?22:20??BasicDraw\代碼及可執行文件(64位)\Timer.cpp
?????文件?????????574??2012-12-16?04:09??BasicDraw\代碼及可執行文件(64位)\FX\BasicDraw.fx
?????目錄???????????0??2012-12-16?04:50??BasicDraw\代碼及可執行文件(64位)\FX\
?????文件???????14826??2012-12-16?04:55??BasicDraw\代碼及可執行文件(64位)\BasicDraw.cpp
?????目錄???????????0??2012-12-16?05:04??BasicDraw\代碼及可執行文件(64位)\
?????文件?????????305??2012-12-16?05:02??BasicDraw\注意.txt
?????文件???????14826??2012-12-16?04:55??BasicDraw\BasicDraw.cpp
?????目錄???????????0??2012-12-16?04:50??BasicDraw\FX\
?????文件?????????574??2012-12-16?04:09??BasicDraw\FX\BasicDraw.fx
?????文件????????2458??2012-12-13?22:20??BasicDraw\Timer.cpp
?????文件?????????908??2012-12-13?21:41??BasicDraw\Timer.h
?????文件??????240640??2012-12-16?04:56??BasicDraw\basicDraw.exe
- 上一篇:D3D11初始化代碼
- 下一篇:D3D11紋理基礎
評論
共有 條評論