【OpenGL从入门到精通(一)】Windows搭建OpenGL的渲染环境,并初始化一个OPenGL窗口
生活随笔
收集整理的這篇文章主要介紹了
【OpenGL从入门到精通(一)】Windows搭建OpenGL的渲染环境,并初始化一个OPenGL窗口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
注意:需要在Windows?窗口程序下,而不能是控制臺程序,Windows平臺的VS下已經包含了OpenGL相關的API,可以直接引用
#include <windows.h> #include<gl/GL.h> #include<gl/GLU.h>#pragma comment(lib,"opengl32.lib") #pragma comment(lib,"glu32.lib")LRESULT CALLBACK GLWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg){case WM_CLOSE:PostQuitMessage(0);break;}return DefWindowProc(hwnd, msg, wParam, lParam); }INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd) {//register windowWNDCLASSEX wndclass;wndclass.cbClsExtra = 0;wndclass.cbSize = sizeof(WNDCLASSEX);wndclass.cbWndExtra = 0;wndclass.hbrBackground = NULL;wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);wndclass.hIcon = NULL;wndclass.hIconSm = NULL;wndclass.hInstance = hInstance;wndclass.lpfnWndProc = GLWindowProc;wndclass.lpszClassName = L"GLWindow";wndclass.lpszMenuName = NULL;wndclass.style = CS_VREDRAW | CS_HREDRAW;ATOM atom = RegisterClassEx(&wndclass);if (!atom){return 0;}//create windowHWND hwnd = CreateWindowEx(NULL, L"GLWindow", L"OpenGL Window", WS_OVERLAPPEDWINDOW,100, 100, 800, 600, NULL, NULL, hInstance, NULL);//create opengl render context HDC是Windows的設備描述表句柄。//在Windows環境中,句柄是用來標識被應用程序所建立或使用的對象的唯一整數HDC dc = GetDC(hwnd);//顏色描述符,渲染的像素格式PIXELFORMATDESCRIPTOR pfd;memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));pfd.nVersion = 1;pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);pfd.cColorBits = 32;//顏色緩沖區pfd.cDepthBits = 24;//深度緩沖區pfd.cStencilBits = 8;//pfd.iPixelType = PFD_TYPE_RGBA;//像素格式pfd.iLayerType = PFD_MAIN_PLANE;//分層式pfd.dwFlags = PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER;//渲染到窗口上,支持OPENGL像素格式,雙緩沖//選擇像素格式int pixelFormat = ChoosePixelFormat(dc,&pfd);SetPixelFormat(dc, pixelFormat, &pfd);//創建OPenGL的渲染設備,HGLRC rc = wglCreateContext(dc);//把rc和dc設置成當前的渲染設備wglMakeCurrent(dc, rc);//初始化OpenGL的//glClearColor:red、green、blue、alpha分別是紅、綠、藍、不透明度,值域均為[0,1]。即設置顏 色,為后面的glClear做準備,默認值為(0,0,0,0)。切記:此函數僅僅設定顏色,并不執行清除工作。glClearColor(0.1, 0.4, 0.6, 1.0);//設置清除緩沖區背景顏色//show windowShowWindow(hwnd, SW_SHOW);UpdateWindow(hwnd);MSG msg;while (true){if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)){if (msg.message == WM_QUIT){break;}TranslateMessage(&msg);DispatchMessage(&msg);}//draw scene繪制場景/*glClear:參數可為下列四個之一或多個,若多個之間用“ | ”隔開,如 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)。即用glClearClolr設定的顏色值清 除緩存區。參數:GL_COLOR_BUFFER_BIT當前可寫的顏色緩沖GL_DEPTH_BUFFER_BIT深度緩沖GL_ACCUM_BUFFER_BIT累積緩沖GL_STENCIL_BUFFER_BIT模板緩沖*/glClear(GL_COLOR_BUFFER_BIT);//present scene 前面緩沖區//后緩沖區交換到前緩沖區SwapBuffers(dc);}return 0; }?
總結
以上是生活随笔為你收集整理的【OpenGL从入门到精通(一)】Windows搭建OpenGL的渲染环境,并初始化一个OPenGL窗口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【开源项目】Socket服务端与客户端传
- 下一篇: 【技术解决方案】Windows平台下摄像