Polygones diverses sans glut[dev c++...]

Description

Différents exemples de plygones en gl/glu

Source / Exemple :


#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>

WNDCLASS wc;
MSG msg;
HWND hWnd;
HDC	DC;
HGLRC RC;

void RePaint ()
{
	glClear (GL_COLOR_BUFFER_BIT);
	glMatrixMode (GL_MODELVIEW);
	glLoadIdentity ();

    gluLookAt (0,0,-10,0,0,0,0,1,0);

    glBegin (GL_POLYGON);
            glColor3d (0,0,1);
            glVertex2i (-5,-2);
            glVertex2i (-5,0);
            glVertex2i (-4,1);
            glVertex2i (-3,0);
            glVertex2i (-3,-2);
            glVertex2i (-4,-3);
    glEnd ();

    glBegin (GL_QUADS);
            glColor3d (1,1,0);
            glVertex2i (2,2);
            glVertex2i (2,4);
            glVertex2i (4,4);
            glVertex2i (4,2);
    glEnd ();

    glBegin (GL_TRIANGLES);
            glColor3d (0,1,0);
            glVertex2i (3,-4);
            glVertex2i (1,-2);
            glVertex2i (1,-4);
    glEnd ();

    glBegin (GL_LINES);
            glColor3d (1,0,1);
            glVertex2i (1,1);
            glVertex2i (-1,-1);
    glEnd ();

	SwapBuffers (DC);
}

void InitPixelFormat (HDC hDC)
{
      PIXELFORMATDESCRIPTOR pfd =
      {
           sizeof (PIXELFORMATDESCRIPTOR),
           1,
           PFD_SUPPORT_OPENGL | PFD_TYPE_RGBA | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER,
           16,
           0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0,
           16,
           0, 0, 0, 0, 0, 0, 0
      };

      SetPixelFormat (hDC, ChoosePixelFormat (hDC, &pfd), &pfd);
}

LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_CREATE:
		DC=GetDC (hwnd);
        InitPixelFormat (DC);
        RC = wglCreateContext (DC);
        wglMakeCurrent (DC, RC);
		break;
	case WM_CLOSE:
        wglMakeCurrent (NULL, NULL);
        wglDeleteContext (RC);
        ReleaseDC (hwnd,DC);
		PostQuitMessage (0);
		break;
    case WM_SIZE:
    	glViewport (0,0,LOWORD (lParam),HIWORD (lParam));
    	glMatrixMode (GL_PROJECTION);
    	glLoadIdentity ();
    	gluPerspective (45,(float)(LOWORD(lParam))/(float)(HIWORD(lParam)),1,100);
    	break;
    case WM_PAINT:
    	RePaint ();
    	break;
	default:
		return DefWindowProc (hwnd,uMsg,wParam,lParam);
		break;
	}
	return 0;
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow)
{
	wc.style = CS_OWNDC;
	wc.lpfnWndProc = WindowProc;
	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(LTGRAY_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = "OGL";
	
	RegisterClass(&wc);

	hWnd = CreateWindow
	("OGL", "Fenetre OpenGL",
	WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
	0, 0, 640, 480, NULL, NULL, hInstance, NULL
	);

	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return 0;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.