J´ai fais mon premier projet OpenGL!!! Voici le code source, vous pouvez me dire si il est correct, parcequ´il marche, mais je eux voir si je l´ai bien écris ( erreur de sintaxes par exempls)
- include < windows.h>
- include < gl/gl.h>
LRESULT CALLBACK WndProc ( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
void EnableOpenGL ( HWND hWnd, HDC *hDC, HGLRC *hRC);
void DisableOpenGL ( HWND hWnd, HDC hDC, HGLRC hRC);
int WINAPI WinMain ( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int iCmdShow)
{
WNDCLASS wc;
HWND hWnd;
HDC hDC;
HGLRC hRC;
MSG msg;
BOOL bQuit = FALSE;
float theta = 0.0f;
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 = " GLSample";
RegisterClass ( &);
hWnd = CreateWindow (
" GLSample", " OpenGL Sample",
WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
0, 0, 800, 640,
NULL, NULL, hInstance, NULL);
EnableOpenGL ( hWnd, &, &);
while ( !bQuit)
{
if ( PeekMessage ( &, NULL, 0, 0, PM_REMOVE))
{
if ( msg.message == WM_QUIT)
{
bQuit = TRUE;
}
else
{
TranslateMessage ( &);
DispatchMessage ( &);
}
}
else
{
glClearColor ( 0.0f, 0.0f, 0.0f, 0.0f);
glClear ( GL_COLOR_BUFFER_BIT);
glPushMatrix ( );
glRotatef ( theta, 0.0f, 0.0f, 0.0f);
glBegin ( GL_POLYGON);
glColor3f ( 1.0f, 0.0f, 0.0f); glVertex2f ( -0.1f, 0.1f);
glVertex2f ( -0.5f, -0.9f);
glColor3f ( 0.0f, 0.0f, 1.0f); glVertex2f ( 0.5f, -0.5f);
glVertex2f ( 0.5f, 1.0f);
glVertex2f ( 1.3f, 0.3f);
glVertex2f ( 1.0f, 0.5f);
glEnd ( );
glPopMatrix ( );
SwapBuffers ( hDC);
theta += 1.0f;
Sleep ( 1);
}
}
DisableOpenGL ( hWnd, hDC, hRC);
DestroyWindow ( hWnd);
return msg.wParam;
}
LRESULT CALLBACK WndProc ( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch ( message)
{
case WM_CREATE:
return 0;
case WM_CLOSE:
PostQuitMessage ( 0);
return 0;
case WM_DESTROY:
return 0;
case WM_KEYDOWN:
switch ( wParam)
{
case VK_ESCAPE:
PostQuitMessage(0);
return 0;
}
return 0;
default:
return DefWindowProc ( hWnd, message, wParam, lParam);
}
}
void EnableOpenGL ( HWND hWnd, HDC *hDC, HGLRC *hRC)
{
PIXELFORMATDESCRIPTOR pfd;
int iFormat;
*hDC = GetDC ( hWnd);
ZeroMemory ( &, 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;
iFormat = ChoosePixelFormat ( *hDC, &);
SetPixelFormat ( *hDC, iFormat, &);
*hRC = wglCreateContext( *hDC ) ;
wglMakeCurrent( *hDC, *hRC ) ;
}
void DisableOpenGL ( HWND hWnd, HDC hDC, HGLRC hRC)
{
wglMakeCurrent ( NULL, NULL);
wglDeleteContext ( hRC);
ReleaseDC ( hWnd, hDC);
}