日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【OpenGL从入门到精通(一)】Windows搭建OpenGL的渲染环境,并初始化一个OPenGL窗口

發布時間:2023/12/3 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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窗口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。