【OpenGL从入门到精通(二)】绘制一个点
生活随笔
收集整理的這篇文章主要介紹了
【OpenGL从入门到精通(二)】绘制一个点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.想要繪制一個點,首先要在OpenGL初始化中先設置矩陣
2.然后在繪制場景中進行點的繪制。其中包括 當前顏色設置;點的位置,點的大小等等
#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的設備描述表句柄。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的/*畫點需要先設置矩陣*/glMatrixMode(GL_PROJECTION);//告訴顯卡要操作投影矩陣gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);//設置投影矩陣glMatrixMode(GL_MODELVIEW);//設置模型矩陣glLoadIdentity();//給它一個單位矩陣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(GL_COLOR_BUFFER_BIT);glColor4ub(255, 255, 255, 255);//設置當前顏色glPointSize(20.0f);glBegin(GL_POINTS);//從當前點取顏色glVertex3f(0.0f, 0.0f, -0.5f);//畫點的數據glEnd();//end//present scene 前面緩沖區//后緩沖區交換到前緩沖區SwapBuffers(dc);}return 0; }?
總結
以上是生活随笔為你收集整理的【OpenGL从入门到精通(二)】绘制一个点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小太妹是指什么意思啊 小太妹解释
- 下一篇: 【OpenGL从入门到精通(三)】第一个