Windows平台下开发OpenGL程序,最常用的还是使用VS环境,glut并不常用。作为《OpenGL边用边学》开篇第一文,先解决在VS环境下设置OpenGL的问题。
1. 使用VS设置向导,建立Win32应用程序框架这个步骤不再多说了,鼠标点几下就可以完成。完成之后编译运行,确保自动生成的项目可用。
2. 包含必要的头文件,链接必要的库文件在stdafx.h中增加如下代码。
3. 初始化OpenGL渲染环境,执行最简单渲染修改窗口过程WndProc(),增加WM_CREATE和WM_PAINT消息的处理,一个用来初始化OpenGL环境,另一个用来实际OpenGL绘图操作。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: OnCreate(hWnd, message, wParam, lParam); break; case WM_COMMAND: { int wmId = LOWORD(wParam); // 分析菜单选择: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_PAINT: OnPaint(hWnd, message, wParam, lParam); ::ValidateRect(hWnd, NULL); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }WM_CREATE消息处理函数如下,功能就是初始化窗口的OpenGL渲染环境。
void OnCreate(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 24, 0,0,0,0,0,0, 0, 0, 0, 0,0,0,0, 32, 0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; HDC hdc = ::GetDC(hWnd); int pixelFormat = ::ChoosePixelFormat(hdc, &pfd); if (!::SetPixelFormat(hdc, pixelFormat, &pfd)) { ::ReleaseDC(hWnd, hdc); MessageBox(hWnd, L"SetPixelFormat", L"ERROR", MB_OK); return; } HGLRC hrc = ::wglCreateContext(hdc); if (!::wglMakeCurrent(hdc, hrc)) { ::ReleaseDC(hWnd, hdc); ::wglDeleteContext(hrc); MessageBox(hWnd, L"wglMakeCurrent", L"ERROR", MB_OK); return; } ::ReleaseDC(hWnd, hdc); }WM_PAINT消息处理函数如下,功能是清空颜色缓冲区,并交换前后缓存,从而更新显示。
void OnPaint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { glClear(GL_COLOR_BUFFER_BIT); HDC hdc = ::GetDC(hWnd); ::SwapBuffers(hdc); ::ReleaseDC(hWnd, hdc); }至此最简单的Win32+OpenGL程序框架就完成了。运行后窗口客户区显示为黑色,如下图:
源码下载
顶 0 踩 0
我的同类文章
猜你在找
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
个人资料
smstong
积分:11754
文章搜索
博客专栏
CSDN-MarkDown编辑器使用手册
文章:5篇
阅读:4107文章分类
文章存档