CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

question sur un programme en openGL

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 20:34:35

konnichi wa o genki desu ka ?
salut à vous tous amis programmeur, voilà j´ai chopé un codesource d´un exemple en openGL et je voulais avoir des précisions dessus, je rappelle qu´il est pas de moi, vous le trouverez en exemple avec Dev-C++ 4.1 euh ben le voilà...

// Includes

  1. include < windows.h>
  2. include < gl/gl.h>

// Function Declarations

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 ) ;

// WinMain

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;

// register window class
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( & ) ;

// create main window
hWnd = CreateWindow(
" GLSample", " My OpenGL Sample",
WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
0, 0, 1024, 1024,
NULL, NULL, hInstance, NULL ) ;

// enable OpenGL for the window
EnableOpenGL( hWnd, &, & ) ;

// program main loop
while ( ! bQuit ) {

// check for messages
if ( PeekMessage( &, NULL, 0, 0, PM_REMOVE ) ) {

// handle or dispatch messages
if ( msg.message == WM_QUIT ) {
bQuit = TRUE;
} else {
TranslateMessage( & ) ;
DispatchMessage( & ) ;
}

} else {

// OpenGL animation code goes here

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ) ;
glClear( GL_COLOR_BUFFER_BIT ) ;

glPushMatrix();
glRotatef( theta, 1.0f, 1.0f, 1.0f ) ;
glBegin( GL_TRIANGLES ) ;
glColor3f( 1.0f, 0.0f, 1.0f ) ; glVertex2f( 0.0f, 1.0f ) ;
glColor3f( 1.0f, 0.0f, 0.0f ) ; glVertex2f( 0.87f, -0.5f ) ;
glColor3f( 1.0f, 1.0f, 0.0f ) ; glVertex2f( -0.87f, -0.5f ) ;
glEnd();
glPopMatrix();

SwapBuffers( hDC ) ;

theta += 1.0f;

}

}

// shutdown OpenGL
DisableOpenGL( hWnd, hDC, hRC ) ;

// destroy the window explicitly
DestroyWindow( hWnd ) ;

return msg.wParam;

}

// Window Procedure

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 ) ;

}

}

// Enable OpenGL

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( &, 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, & ) ;

// create and enable the render context ( RC)

  • hRC = wglCreateContext( *hDC ) ;

wglMakeCurrent( *hDC, *hRC ) ;

}

// Disable OpenGL

VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC )
{
wglMakeCurrent( NULL, NULL ) ;
wglDeleteContext( hRC ) ;
ReleaseDC( hWnd, hDC ) ;
}

    • je voudrais savoir si il est possible de changer la vitesse de rotation du triangle

et aussi si je pouvais faire un triangle en 3dimensions ça serait dur ?

ben voilà . ..

arigato
konban wa

JeanYvesYves
JeanYvesYves
Niveau 10
03 octobre 2003 à 20:38:48

changer la vitesse du triangle : tu changes la ligne :

theta += 1.0f;
essaie de mettre une autre valeur que 1.0f

pour faire un triangle en 3D : ça se passe entre le GLBegin et le GLEnd :

glBegin( GL_TRIANGLES ) ;
glColor3f( 1.0f, 0.0f, 1.0f ) ; glVertex2f( 0.0f, 1.0f ) ;
glColor3f( 1.0f, 0.0f, 0.0f ) ; glVertex2f( 0.87f, -0.5f ) ;
glColor3f( 1.0f, 1.0f, 0.0f ) ; glVertex2f( -0.87f, -0.5f ) ;
glEnd();

Ici, tu ne définie qu´un triangle. Si tu en définis d´autres C bon.

JeanYvesYves
JeanYvesYves
Niveau 10
03 octobre 2003 à 20:39:51

faudra mettre des glvertex3f a la place des glvertex2f

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 21:29:50

merci JYY, je n´ai pas trop bien compris pour ce qui est du glvertex3f ( ça va faire trois face au lieu de deux c´est ça ? ) enfin je vais me débrouiller ( n´empeche je suis content de m´etre mis au C++)
voilà si vous avez d´autre amélioration a apporter au pitit prog que voilà allez-y comme ça je pourrais étudier le source :)

JeanYvesYves
JeanYvesYves
Niveau 10
03 octobre 2003 à 21:52:43

" ça va faire trois face au lieu de deux c´est ça ? "
--> non pas du tout.

en gros, glvertex* te permet de définir un point dans l´espace.

si tu fait un glvertex2f : tu définis un point dans un plan ( 2 coordonnées)
un glvertex3d : tu définis un point dans l´espace : 3 coordonnées ( x,y,z);

ce qui fait le nombre de faces, c´est le

glBegin( GL_TRIANGLES ) ;
quand tu lui mets ça, openGL sait qu´il faudra prendre les points 3 par 3.
que ce soit dans le plan ou dans l´espace, un triangle reste un triangle : il faudra mettre entre le GlBegin et le GlEnd un nombre de glvertex multiple de 3.

si tu en mets 6 : il fera les triangles 1-2-3 puis 4-5-6.

pour faire un triangle en 3D : disons un tetraedre composé de 4 faces :

faut mettre 4 triangles, donc 12 glvertex.
( evidemment, si tu en as bcp, rien ne t´empeche d´utiliser des boucles), mais pour le tetraedre, pas trop de boucles possibles je pense.

Pseudo supprimé
Pseudo supprimé 03 octobre 2003 à 22:30:30

> konnichi wa o genki desu ka ?

Yô koso ! O-genki desu ka ? ??

Ja ne, konban wa :rire: !

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 22:36:31

aaaaaaaaaargh je suis nul en géométrie !
bon en gros faut faire 12 glVertex nan ?
mais faut les placer où exactement ?
avec la syntaxe please :)

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 22:41:06

>> hai !

JeanYvesYves
JeanYvesYves
Niveau 10
03 octobre 2003 à 23:01:17

Ben faire de la 3D sans faire de géométrie, c´est faire des poemes sans savoir écrire !

il faut que tu imagines l´espace ! n´hésite pas a prendre un papier, et desine !
puis releve des coordonnées , et imagine la 3e dimension ! ou dessine en perspective !

il faut savoir le faire :)

JeanYvesYves
JeanYvesYves
Niveau 10
03 octobre 2003 à 23:02:24

si tu veux des exemple de cubes qui tournent, va sur le site de NEHE

http://nehe.gamedev.net

et regarde les tutoriaux

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 23:03:03

beuh...je vais essayer...tu te couche a quelle heure JYY ?
comme ça si j´ai un prob je peux te poser la question

i_am_the_law
i_am_the_law
Niveau 6
03 octobre 2003 à 23:11:57

calculator pourra t´aider, il connait bien ce bout de programme.

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 23:16:08

il est là calculator ?

i_am_the_law
i_am_the_law
Niveau 6
03 octobre 2003 à 23:18:00

euh, il vaut mieux pas qu´il voit ce topic :)
C´etait une plaisanterie.
https://www.jeuxvideo.com/cgi-bin/jvforums/forums.cgi?mode=1&Numero=8216115&NumForum=31&RR=opengl&TR=2&Num_page=1&debut_ndx=1

Fais comme JYY t´as dit, regarde sur le site de nehe, il commence par un triangle et un carre et apres il en fait une pyramide et un cube.

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 23:19:58

euh oui mais les leçons sont en anglaiiiiiis !
déja que je pige pas trop en français alors en anglais !

i_am_the_law
i_am_the_law
Niveau 6
03 octobre 2003 à 23:23:43

Ben cherche un tutorial en francais alors...

JeanYvesYves
JeanYvesYves
Niveau 10
03 octobre 2003 à 23:25:01

rah lala :)

lacune en géométrie, et en anglais ? ?

mais qu´est ce qu´on va faire de toi ? :lol:

Je me couche tard en effet !
tu n´as qu´a me contacter sur MSN, AIM ou ICQ
regarde donc mon mail...
et cherche FVIRTMAN sur ICQ ou AIM.

mais je risque de déco et reco.

Neoprogrhammer
Neoprogrhammer
Niveau 6
03 octobre 2003 à 23:44:54

je suis désolé sensai ! !! je vais de suite me faire seppuku pour laver mon honneur !

je suis en général une GROSSE m*rde en math

Neoprogrhammer
Neoprogrhammer
Niveau 6
04 octobre 2003 à 00:02:13

dsl JYY mon modem a bugé alors c pour ça que ça a quitté la convers

maskware
maskware
Niveau 8
04 octobre 2003 à 00:12:03

C + simple glut pour commencer plutot que win32 ! Passes qd mm pas trop de temps a essayer de composer manuellement des figures, ca sert a pas grand chose ! Regardes plutot les autres tutoriaux :)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment