先来测试下是否成功建立了DX11的设备和显示缓冲。
先创建个新的项目。把项目的目录选项的包含目录添加上面提到的一些文件的位置。
添加个“main.ccp”文件到当前项目。
#pragma once
#include "DX.h"
#include "DXView.h"
Device device;DXView gdevice;
long WINAPI WndProc( HWND hWnd, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
gdevice.HandleMsg(uMsg,wParam,lParam);
if(uMsg== WM_CREATE)
{
device.Create();
gdevice.Create(device,hWnd,4);
gdevice.frameRate=60;
return 0;
}
if(uMsg== WM_CLOSE)
{
device.Dispose();
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
HWND hwnd;
WNDCLASS wc= {
CS_HREDRAW | CS_VREDRAW,WndProc,0,0, hInstance,0,LoadCursor(0, IDC_ARROW ),0,0,NAME};
RegisterClass( &wc );
hwnd = CreateWindowEx(0,NAME,TITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 880, 600, NULL, NULL, hInstance, NULL );
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
MSG msg = {0};
while( WM_QUIT != msg.message )
{
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else gdevice.Render();
}
return msg.wParam;
}
添加个“DXView.h”文件到当前项目。
struct DXView:SpliteDevice
{
DXView(){}
void Draw() { Clear(Red); }
运行后你会得到个红色的背景,3D的元素后面会提到。并逐渐丰富DXView的内容。
可以看到,把大量重复输入和内容的动作完全压缩在预置类中,每个分类又和轻巧和高效。可以极大的提高程序的可读性和稳定性,任何一个部件出问题 VC会把指针自动跳转到出错的类中,避免了在一堆相近的指针中反复翻查出错的部分。
}