# this is Blaine Hodge's OpenGL / Win32 sample, # converted to brace and with the GL stuff separate from the Win32 stuff # here's the GL stuff: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) EnableOpenGL(HWND hWnd, HDC * hDC, HGLRC * hRC) DisableOpenGL(HWND hWnd, HDC hDC, HGLRC hRC) float theta = 0.0f render() glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ) glClear( GL_COLOR_BUFFER_BIT ) glPushMatrix() glRotatef( theta, 0.0f, 0.0f, 1.0f ) glBegin( GL_TRIANGLES ) glColor3f( 1.0f, 0.0f, 0.0f ); glVertex2f( 0.0f, 1.0f ) glColor3f( 0.0f, 1.0f, 0.0f ); glVertex2f( 0.87f, -0.5f ) glColor3f( 0.0f, 0.0f, 1.0f ); glVertex2f( -0.87f, -0.5f ) glEnd() glPopMatrix() theta += 1.0f # here's the Windoze stuff: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) WNDCLASS wc HWND hWnd HDC hDC HGLRC hRC MSG msg BOOL quit = FALSE wc.style = CS_OWNDC wc.lpfnWndProc = WndProc wc.cbClsExtra = 0 wc.cbWndExtra = 0 wc.hInstance = hInstance wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ) wc.hCursor = LoadCursor( NULL, IDC_ARROW ) wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH ) wc.lpszMenuName = NULL wc.lpszClassName = "geon" RegisterClass( &wc ) hWnd = CreateWindow( \ "geon", "geon", \ WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE, \ 0, 0, 256, 256, \ NULL, NULL, hInstance, NULL ) EnableOpenGL( hWnd, &hDC, &hRC ) while !quit if PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) if ( msg.message == WM_QUIT ) quit = TRUE else TranslateMessage( &msg ) DispatchMessage( &msg ) else render() SwapBuffers( hDC ) DisableOpenGL( hWnd, hDC, hRC ) DestroyWindow( hWnd ) return msg.wParam LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) # brace's swtich / case syntax is pretty crap, ins't it? :) switch message WM_CREATE return 0 WM_CLOSE PostQuitMessage( 0 ) return 0 WM_DESTROY return 0 WM_KEYDOWN switch wParam VK_ESCAPE PostQuitMessage(0) return 0 return 0 _ return DefWindowProc( hWnd, message, wParam, lParam ) EnableOpenGL(HWND hWnd, HDC * hDC, HGLRC * hRC) PIXELFORMATDESCRIPTOR pfd int format *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 = 24 pfd.cDepthBits = 16 pfd.iLayerType = PFD_MAIN_PLANE format = ChoosePixelFormat( *hDC, &pfd ) SetPixelFormat( *hDC, format, &pfd ) *hRC = wglCreateContext( *hDC ) wglMakeCurrent( *hDC, *hRC ) DisableOpenGL(HWND hWnd, HDC hDC, HGLRC hRC) wglMakeCurrent( NULL, NULL ) wglDeleteContext( hRC ) ReleaseDC( hWnd, hDC )