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

Mon premier OpenGL!!!

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 14:22:21

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)

  1. include < windows.h>
  2. 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);
}

Altonfrere
Altonfrere
Niveau 10
06 juillet 2003 à 15:02:15

lol, bonjour le copier/coller !

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 15:10:58

oui de mon programme :) altonfrere, c moi qui ai fait ce programme...

Altonfrere
Altonfrere
Niveau 10
06 juillet 2003 à 15:29:17

ah bon ? ! lol,

tu peux m´expliquer quelques trucs car j´ai pas tout compris :
à quoi te sert la variable " theta" ? pourquoi ya marqué Sleep(1) à un moment donné ? que signifie " erreur de syntaxe" pour toi ?
dernière question : qu´as tu réellement compris dans toutes ces lignes que tu viens de nous écrire ( ton source ressemble étrangement à un exemple classique opengl . .. tu aurais au moins pu changer le titre de la fenêtre)

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 15:32:21

ok:

il y a deux théta: celui de forme de rotation et l´autre de vitesse de rotassion.

Sinon, j´ai a peut près tut compris tu sais...

Sinon ce n´est pas un " exemple calssique Open GL" mais mon programme.

Ensuite, si tu ne me crois pas donne moi ton MSN... Si tu l´as, sinon AIM...

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 15:33:45

Oups, j´ai oublier:

Sleep(1) est la vitesse d´accelération/décélération de la figure ( ici un polygone) à un certin moment. Si par exemple je met Sleep(1000) la figure ne va quaziment plus bougé sinon par des petits coup sec.

Altonfrere
Altonfrere
Niveau 10
06 juillet 2003 à 15:40:05

ah d´accord ok . ..

:lol:

Altonfrere
Altonfrere
Niveau 10
06 juillet 2003 à 15:43:08

( ah lala ces jeunes . ..)

Pseudo supprimé
Pseudo supprimé 06 juillet 2003 à 15:44:44

Ouais mais bon pour infos Calcul, tu es partit d´un exemple pour faire ce programme, et on voit que c´est QUASI du cop/coll tu as meme pas eu liD de changer le nom dla window :s

> " GLSample", " OpenGL Sample",

Altonfrere
Altonfrere
Niveau 10
06 juillet 2003 à 15:45:52

bah ca encore c´est pas le plus grave . .. mais utiliser Sleep pour contrôler la vitesse de rotation, aie aie ! si seulement il savait a quoi sert cette instruction ! :(

enfin, j´ai abandonné il y a un bon moment . ..

hs_dino
hs_dino
Niveau 9
06 juillet 2003 à 16:17:13

Pfffff! Vous etes trop nul! Un Sleep c´est un sous vetement qu´on se met autour de la Beet! :rire: :rire2: :-d

:d) Dino
:d) The Zythum Project
:d) http://www.zythum-project.com

Pseudo supprimé
Pseudo supprimé 06 juillet 2003 à 16:25:53

PTDR :)

JeanYvesYves
JeanYvesYves
Niveau 10
06 juillet 2003 à 16:51:40

lol :)

Sleep ça sert pas a ralentir les polygones, ça sert a arreter le programme, le faire dormir :)
C pur ça que C plus lent !

lag-it
lag-it
Niveau 10
06 juillet 2003 à 18:13:15

Calculator, je te conseille de bien maitriser le C/C++ avant de te lancer sur OpenGL.

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 19:29:38

non, la je vais continuer...

lag-it
lag-it
Niveau 10
06 juillet 2003 à 20:12:24

Comme tu veux, c´était juste un conseil.
Je suis conscient qu´il est frustrant de ne faire que du mode console ( on est tous passés par là :-))) )
Cependant, tu risque de ne pas comprendre cerataines ( beaucoup même vu que tu débute en C je crois ) choses.

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 20:29:59

Tu sais comment j´ai appris le C?? J´ai pris un code, et je l´ai décomposer pour le comprendre. Je fais al mêmee chose avec le mode graphique et sa marche. J´ai déjà fais queqleus petits trucs mararant.

kookii
kookii
Niveau 4
06 juillet 2003 à 21:21:28

glRotatef ( theta, 0.0f, 0.0f, 0.0f);
tu m´explique ce que fait cette fonction? ; )
pcq j´ai encore jamais vu de rotation autour d´un vecteur nul.

lag-it
lag-it
Niveau 10
06 juillet 2003 à 21:27:34

Je ne conteste nullement cette métode, je l´employe moi même couramment ( lire du source c´est très bien et sa permet d´apprendre ) , mais sais tu ( très) bien te servir des pointeurs par exemple ? On s´en sert pas mal dans OpenGL.
Le problème je pense c´est que tu veux tout faire tout de suite ( bon c´est normal).
Mais t´as commencer à programmer en C il y a quelques semaines, il y a quelques jours tu annoncais que tu avais créé un site web visant à créer d´autre sites moyennant rémunération et la tu te lance dans OpenGL.
Si ca marche, c´est bien mais moi tout cela m´a l´air un peu . .. précoce ?
Je ne me suis mis à OpenGL qu´environ un an après avoir débuté le C pour bien posséder toutes les bases.
Mais fait le comme tu le sens.

Calculator_V2
Calculator_V2
Niveau 10
06 juillet 2003 à 21:34:53

regarde, tu le dis toi même fait le comme tu le sens. C bien ce que je compte faire, et la ni les vannes d´altonfrère, ni les insulte de rei, ni les morales de JY² ne m´arreterons.

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