Na początku zadeklarujmy zmienne których użyjemy:
1 2 3 4 5 |
static HDC hDC; static HGLRC hRC; static HWND hstat; |
W kodzie dla zdarzenia WM_CREATE należy wpisać:
1 2 3 |
hstat=CreateWindow("static","",WS_CHILD|WS_VISIBLE, 10,10,200,200,hWnd,(HMENU)666,GetModuleHandle(NULL),NULL); |
by stworzyć obiekt. Potem normalnie inicjujemy OpenGL’a, tyle, że kontekst graficzny przypisujemy dla hstat, o taki kod był w szablonie, tylko dół dodałem:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC) { PIXELFORMATDESCRIPTOR pfd; int iFormat; /* get the device context (DC) */ *hDC = GetDC (hWnd); /* set the pixel format for the DC */ ZeroMemory (&pfd, sizeof (pfd)); pfd.nSize = sizeof (pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 32; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat (*hDC, &pfd); SetPixelFormat (*hDC, iFormat, &pfd); /* create and enable the render context (RC) */ *hRC = wglCreateContext( *hDC ); wglMakeCurrent( *hDC, *hRC ); //tutaj może być dowolne ustawienie rzutowania, ale wybrałem takie glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0,200,200,0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } |
Użyjemy tej funkcji z procedurze okienkowej po pokazaniu się okna, czyli po funkcji ShowWindow w taki […]