声明:
这里只是对NeHe教程阅读的一点笔记,如果你还没看过NeHe的课程。那么我建议你还是先上GameDev去看看,我在这里并不打算过多的引用其中内容,但是偶尔会有些交合。只是为了给自己一个更清晰的思路。
1. 按键数组:
bool keys[256];
2. 消息处理:
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
WM_ACTIVATE: HIWORD(wParam)=0,程序最小化
WM_SYSCOMMAND: wParam=SC_SCREENSAVE(屏保),SC_MONITORPOWER(节电)
WM_CLOSE: PostQuitMessage();
WM_KEYDOWN: keys[wParam] = true;
WM_KEYUP: keys[wParam] = false;
WM_SIZE: ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));
DefWindowProc(); // 系统默认的消息处理方式
3. 改变窗口大小:
void ReSizeGLScene(GLsizei, GLsizei);
4. 初始化OGL:
int InitGL();
阴影平滑、颜色、深度、透视修正等其他
5. 绘制场景:
int DrawGLScene();
6. 销毁窗口:
退出全屏、删除RC、释放DC、销毁窗口、注销窗口类
7. 创建窗口:
注册窗口类: RegisterClass();
全屏设置: ChangeDisplaySettings();
窗口风格:
WS_EX_APPWINDOW WS_POPUP;
WS_EXAPPWINDOW|WS_EX_WINDOWEDGE WS_OVERLAPPEDWINDOW;
调整窗口大小: AdjustWindowRectEx();
创建窗口: CreateWindowEx();
获取DC、设置像素格式、创建RC、激活RC
显示窗口、提高窗口优先级、获取焦点、重置GL场景
初始化OGL
8. int WINAPI WinMain():
创建窗口
主循环
检查存在消息PeekMessage(&msg,NULL,0,0,PM_REMOVE)
WM_QUIT: done = true;
TranslateMessage();
DispatchMessage();
没有消息
程序激活
keys[VK_ESCAPE]: done = true;
DrawGLScene();
SwapBuffers();
keys[VK_F1]
keys[VK_F1] = false;
KillGLWindow();
fullscreen != fullscreen;
CreateGLWindow();
KillGLWindow();
return(msg.wParam);
这里只是对NeHe教程阅读的一点笔记,如果你还没看过NeHe的课程。那么我建议你还是先上GameDev去看看,我在这里并不打算过多的引用其中内容,但是偶尔会有些交合。只是为了给自己一个更清晰的思路。
1. 按键数组:
bool keys[256];
2. 消息处理:
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
WM_ACTIVATE: HIWORD(wParam)=0,程序最小化
WM_SYSCOMMAND: wParam=SC_SCREENSAVE(屏保),SC_MONITORPOWER(节电)
WM_CLOSE: PostQuitMessage();
WM_KEYDOWN: keys[wParam] = true;
WM_KEYUP: keys[wParam] = false;
WM_SIZE: ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));
DefWindowProc(); // 系统默认的消息处理方式
3. 改变窗口大小:
void ReSizeGLScene(GLsizei, GLsizei);
4. 初始化OGL:
int InitGL();
阴影平滑、颜色、深度、透视修正等其他
5. 绘制场景:
int DrawGLScene();
6. 销毁窗口:
退出全屏、删除RC、释放DC、销毁窗口、注销窗口类
7. 创建窗口:
注册窗口类: RegisterClass();
全屏设置: ChangeDisplaySettings();
窗口风格:
WS_EX_APPWINDOW WS_POPUP;
WS_EXAPPWINDOW|WS_EX_WINDOWEDGE WS_OVERLAPPEDWINDOW;
调整窗口大小: AdjustWindowRectEx();
创建窗口: CreateWindowEx();
获取DC、设置像素格式、创建RC、激活RC
显示窗口、提高窗口优先级、获取焦点、重置GL场景
初始化OGL
8. int WINAPI WinMain():
创建窗口
主循环
检查存在消息PeekMessage(&msg,NULL,0,0,PM_REMOVE)
WM_QUIT: done = true;
TranslateMessage();
DispatchMessage();
没有消息
程序激活
keys[VK_ESCAPE]: done = true;
DrawGLScene();
SwapBuffers();
keys[VK_F1]
keys[VK_F1] = false;
KillGLWindow();
fullscreen != fullscreen;
CreateGLWindow();
KillGLWindow();
return(msg.wParam);