begin process at 2012 05 27 16:44:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > ANIMATION OPEN GL

ANIMATION OPEN GL


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Niveau :Expert Date de création :19/04/2002 Date de mise à jour :19/04/2002 15:30:33 Vu / téléchargé :8 892 / 399

Auteur : adrien78

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

C' est tout simplement une sphère + une texture de sphère qui tourne avec des fonctions :
éssayer c' est touches :
a,b,espace...

Source

  • #include <windows.h>
  • #include <gl/gl.h>
  • #include <gl/glu.h>
  • #include <gl/glaux.h>
  • WNDCLASS wc;
  • MSG msg;
  • HWND hWnd;
  • HDC DC;
  • HGLRC RC;
  • unsigned texture[2];
  • int x,z=-5,filt,tex=1,zbuff=1,fog,rot;
  • float fogcolor[4] = {0.5f,0.5f,0.5f,1};
  • GLUquadricObj *Quadric1 = gluNewQuadric();
  • void LoadTexture()
  • {
  • AUX_RGBImageRec *texture1;
  • texture1 = auxDIBImageLoad("machin.bmp");
  • glGenTextures (2, &texture[0]);
  • glBindTexture (GL_TEXTURE_2D, texture[0]);
  • glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  • glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  • glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
  • GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  • glBindTexture(GL_TEXTURE_2D, texture[1]);
  • glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  • glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  • glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
  • GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  • };
  • void RePaint()
  • {
  • glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  • glMatrixMode (GL_MODELVIEW);
  • glLoadIdentity ();
  • gluLookAt(x,0,z,x,0,z+10,0,1,0);
  • if (zbuff) glEnable(GL_DEPTH_TEST);
  • else glDisable(GL_DEPTH_TEST);
  • if (tex) glEnable(GL_TEXTURE_2D);
  • else glDisable(GL_TEXTURE_2D);
  • if (fog) glEnable(GL_FOG);
  • else glDisable(GL_FOG);
  • glBindTexture(GL_TEXTURE_2D, texture[filt]);
  • gluQuadricTexture(Quadric1, TRUE);
  • gluQuadricDrawStyle(Quadric1, GLU_FILL);
  • rot++;
  • glRotated(rot,0,1,0);
  • gluSphere(Quadric1,4,50,50);
  • 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);
  • glEnable (GL_DEPTH_TEST);
  • glEnable(GL_TEXTURE_2D);
  • glClearColor (0.5f,0.5f,0.5f,1);
  • glFogfv(GL_FOG_COLOR, fogcolor);
  • glFogi(GL_FOG_MODE, GL_EXP);
  • glHint(GL_FOG_HINT, GL_NICEST);
  • glFogf(GL_FOG_DENSITY, 0.3f);
  • glFogf(GL_FOG_START, 1.0);
  • glFogf(GL_FOG_END, 5.0);
  • LoadTexture();
  • 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;
  • case WM_KEYDOWN:
  • switch (wParam) {
  • case VK_DOWN:
  • z--;
  • break;
  • case VK_UP:
  • z++;
  • break;
  • case VK_RIGHT:
  • x--;
  • break;
  • case VK_LEFT:
  • x++;
  • break;
  • case 'F':
  • filt=!filt;
  • break;
  • case 'T':
  • tex=!tex;
  • break;
  • case 'Z':
  • zbuff=!zbuff;
  • break;
  • case 'B':
  • fog=!fog;
  • break;
  • case 'A':
  • rot++ +rot++ +rot++;
  • }
  • 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;
  • }
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>

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

unsigned texture[2];
int x,z=-5,filt,tex=1,zbuff=1,fog,rot;
float fogcolor[4] = {0.5f,0.5f,0.5f,1};

GLUquadricObj *Quadric1 = gluNewQuadric();

void LoadTexture()
{
	AUX_RGBImageRec *texture1;
	texture1 = auxDIBImageLoad("machin.bmp");
	glGenTextures (2, &texture[0]);

	glBindTexture (GL_TEXTURE_2D, texture[0]);
	glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
	glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
	
	glBindTexture(GL_TEXTURE_2D, texture[1]);
	glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
};

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

	gluLookAt(x,0,z,x,0,z+10,0,1,0);

    if (zbuff) glEnable(GL_DEPTH_TEST);
		else glDisable(GL_DEPTH_TEST);

    if (tex) glEnable(GL_TEXTURE_2D);
		else glDisable(GL_TEXTURE_2D);
	
	if (fog) glEnable(GL_FOG);
		else glDisable(GL_FOG);

	glBindTexture(GL_TEXTURE_2D, texture[filt]);

	gluQuadricTexture(Quadric1, TRUE);
	gluQuadricDrawStyle(Quadric1, GLU_FILL);

	rot++;
	glRotated(rot,0,1,0);
	gluSphere(Quadric1,4,50,50);

	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);
        glEnable (GL_DEPTH_TEST);
		glEnable(GL_TEXTURE_2D);
        glClearColor (0.5f,0.5f,0.5f,1);
		glFogfv(GL_FOG_COLOR, fogcolor);
		glFogi(GL_FOG_MODE, GL_EXP);
		glHint(GL_FOG_HINT, GL_NICEST);
		glFogf(GL_FOG_DENSITY, 0.3f);
		glFogf(GL_FOG_START, 1.0);
		glFogf(GL_FOG_END, 5.0);
        LoadTexture();
		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;
	case WM_KEYDOWN:
		switch (wParam) {
		case VK_DOWN:
			z--;
			break;
		case VK_UP:
			z++;
			break;
		case VK_RIGHT:
			x--;
			break;
		case VK_LEFT:
			x++;
			break;
		case 'F':
			filt=!filt;
			break;
		case 'T':
			tex=!tex;
			break;
		case 'Z':
			zbuff=!zbuff;
			break;
		case 'B':
			fog=!fog;
			break;
        case 'A':
            rot++ +rot++ +rot++;
		}
		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;
} 

 Conclusion

Voila, pour les nobs c compliqué et pour ceux qui pratique open GL ca sera bien utile...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • glaux.dllTélécharger ce fichier [Réservé aux membres club]1 386 496 octets
  • La terre.devTélécharger ce fichier [Réservé aux membres club]393 octets
  • La terre.exeTélécharger ce fichier [Réservé aux membres club]8 704 octets
  • machin.bmpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier66 614 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 296 octets
  • main.oTélécharger ce fichier [Réservé aux membres club]6 706 octets
  • rsrc.oTélécharger ce fichier [Réservé aux membres club]1 026 octets
  • Rsrc.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier77 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip [DEV-C++&GT;&GT;SDL] POUR BIEN DÉBUTER EN SDL
Source avec une capture ANIMATION [DEV-C++]
SP-N.O.S.

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

Commentaires et avis

Commentaire de maya75 le 21/06/2002 11:27:55

c bien pour une première approche de l'opengl, mais c dommage que tu ne mettes pas de commentaire pour expliquer à ceux qui ne connaissent pas.

Commentaire de zouza le 02/11/2003 18:57:07

C'est clair qu'il y a plus commentée comme source !!!
Tu nous facilites pas la tache a nous (noob comme tu nous appelles)

Erf, execellent pour faire du copier/coller, incomprehensible sinon

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales