高手不要看了呵呵本人正在学习D3D 有一些编程经验,
VC: 半年
C#:4个月
刚毕业
以上为本人条件,差点,不过我相信学习只要有方法就决对可以的。
按小游戏的构架学吧呵呵这样要容易点. 今天先学习一些D3D制作的一些前提知识。
本机编译环境:2003.net Directx 9.0
用到的是win32的工程,最起码SDK要看懂和理解自动生成的代码(在此不能说了实在不行,没法,再看呵呵)
在程序中改进程序本的循环,说白了就是让你的程序运行你的游戏主体GameMain()当然改完了还要有初使化GameInit()和游戏的结束GameEnd()
基本上就是GameInit()-GameMain()-GameEnd()
不多说了贴些代码上去
// 全局变量:
//new s 定义新加变量
HWND g_hwnd;
bool g_activeApp;
//new e
//初使化在这儿
GameInit();
// 主消息循环:
//while (GetMessage(&msg, NULL, 0, 0))
//{
//if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
//{
//TranslateMessage(&msg);
//DispatchMessage(&msg);
//}
//}
//new s 此处是重点把上面的循环换成下面的
while (1)
{
if (PeekMessage(&msg,NULL,NULL,NULL,PM_NOREMOVE))
{
if (GetMessage(&msg, NULL, 0, 0))
{
return (int) msg.wParam;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if (g_activeApp)
{
if (!GameMain())//此处主循环
{
PostQuitMessage(1);
}
}
else
{
WaitMessage();
}
}
}
//new e
//销毁放这儿
GameEnd();
return (int) msg.wParam;
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
//new s 付值 不要忘了以后用的到的
g_hwnd = hWnd;
//new e
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
//new s此处也很重要来吧
case WM_ACTIVATEAPP:
g_activeApp = (int) wParam;
break;
//new e
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
行了这段代码没什么难的改一下而以吃透就行下一篇就可以D3D的路程了要睡了明天接着来.
没办法格式总搞不好,晕了明天再说