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
// 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)
// 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)
wglMakeCurrent( *hDC, *hRC ) ;
}
// Disable OpenGL
VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC )
{
wglMakeCurrent( NULL, NULL ) ;
wglDeleteContext( hRC ) ;
ReleaseDC( hWnd, hDC ) ;
}
et aussi si je pouvais faire un triangle en 3dimensions ça serait dur ?
ben voilà . ..
arigato
konban wa
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.
faudra mettre des glvertex3f a la place des glvertex2f
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 ![]()
" ç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.
> konnichi wa o genki desu ka ?
Yô koso ! O-genki desu ka ? ??
Ja ne, konban wa
!
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 ![]()
>> hai !
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 ![]()
si tu veux des exemple de cubes qui tournent, va sur le site de NEHE
http://nehe.gamedev.net
et regarde les tutoriaux
beuh...je vais essayer...tu te couche a quelle heure JYY ?
comme ça si j´ai un prob je peux te poser la question
calculator pourra t´aider, il connait bien ce bout de programme.
il est là calculator ?
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.
euh oui mais les leçons sont en anglaiiiiiis !
déja que je pige pas trop en français alors en anglais !
Ben cherche un tutorial en francais alors...
rah lala
lacune en géométrie, et en anglais ? ?
mais qu´est ce qu´on va faire de toi ?
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.
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
dsl JYY mon modem a bugé alors c pour ça que ça a quitté la convers
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 ![]()