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

Aide OpenGL

CYBER_BOB
CYBER_BOB
Niveau 10
20 juillet 2004 à 23:07:15

Bonjour a tous,
c´est incroyable ! !! je n´arrive pas a dessiner un carre avec OpenGL et je ne sais pas pourquoi... voila pourtant les coordonnées que je rentre:

glBegin(GL_QUADS);
glVertex2i(10, 10);
glVertex2i(150, 10);
glVertex2i(10, 150);
glVertex2i(150, 150);
glEnd();

ca ne me fait pas un carré et je ne sais pas pourquoi... quelqu´un peut m´aider svp ! !!
Merci par avance...
Bob

CYBER_BOB
CYBER_BOB
Niveau 10
20 juillet 2004 à 23:10:18

non c´est bon laissé tombé je viens de comprendre... je croyai qu´on pouvait definir les points comme on voulait, mais non, il faut qu´ils se suivents ! !!
pour que ca marche le bon code est:

glBegin(GL_QUADS);
glVertex2i(10, 10);
glVertex2i(10, 150);
glVertex2i(150, 150);
glVertex2i(150, 10);
glEnd();

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2004 à 23:17:07

le piege aussi, c´est de mettre sa caméra en face :)

CYBER_BOB
CYBER_BOB
Niveau 10
21 juillet 2004 à 00:00:17

sinon la j´essai de deplacer ce carré de 10 pixels quand on appuie sur la touche ´a´ ( pour la reception des entrées au clavier j´utilise GLUT), mais je ne sais pas trop comment faire...

JeanYvesYves
JeanYvesYves
Niveau 10
21 juillet 2004 à 09:36:44

le truc a faire : tu crees un tableau :

char Key[256];

qui donne 1 ou 0 selon que la touche soit enfoncée ou non.
Si tu as cela, c´est simple :

if ( Key[´a´]) / / bouge le carre...

pour avoir cela, c´est simple : avant le glutmainloop, tu mets :

glutKeyboardFunc(keydown);
glutKeyboardUpFunc(keyup);

et au dessus tu implémentes :

void keydown(unsigned char key,int x, int y)
{
Key[key]=1;
}

void keyup(unsigned char key,int x, int y)
{
Key[key]=0;
}

CYBER_BOB
CYBER_BOB
Niveau 10
21 juillet 2004 à 10:45:05

pour la gestion de clavier ca va, mais c´est pour faire deplacer le carré que j´y arrive pas ! !!

maskware
maskware
Niveau 8
21 juillet 2004 à 10:54:00

Si tu veux deplacer le carré, tu devras faire, au moment de rendre ton carré :

glPushMatrix();
glTranslatef(mouvement_x, mouvement_y, mouvement_z);
dessin_de_ton_carre();
glPopMatrix();

et puis ensuite pour la camera, glLoadIdentity(); puis ta fonction normale, soit gluLookAt(...);
ou glLoadMatrixf(ta_matrice_de_transformation);

les glPushMatrix() et glPopMatrix() sont important, ils indiquent que toutes les transformations qui seront effectués n´auront d´influence qu´entre ces deux fonctions. En les enlevant, ton cube se deplacera, mais avec toute ta scene.

Tu noteras que le deplacement est en unités OpenGL. En tout cas ne deplace pas tes objets en touchant a leur vertices, c´est tres sale !

JeanYvesYves
JeanYvesYves
Niveau 10
21 juillet 2004 à 11:08:54

déplacer un objet revient a le dessiner un peu plus loin a la frame suivante, c´est tout :)

CYBER_BOB
CYBER_BOB
Niveau 10
21 juillet 2004 à 11:25:27

une derniere question et je vous laisse tranquil pour un moment :)... comment je peux charger un jpg en OpenGL?

JeanYvesYves
JeanYvesYves
Niveau 10
21 juillet 2004 à 11:26:21

faut une autre lib.
freeimage ( je ne connais pas)
ou SDL_image

CYBER_BOB
CYBER_BOB
Niveau 10
21 juillet 2004 à 11:30:00

ok, c´est juste ce que je voulais savoir :)
merci pour vos differentes reponses ! !!
bonne prog

CYBER_BOB
CYBER_BOB
Niveau 10
22 juillet 2004 à 00:10:14

en fait la je nage un peu, beaucoup meme ! !!
je voudrais avoir un exemple ! !! en fait j´ai mon carré, je voudrais ne pas le voir, puis en fait, on se rapproche de lui juska ce que l´image prenne toute la place de la fenetre... en fait j´aimerais bien un petit exemple...
merci par avance...
Bob...

lag-it
lag-it
Niveau 10
22 juillet 2004 à 09:16:44

http://nehe.gamedev.net/

Y a pas mieux :ok:

CYBER_BOB
CYBER_BOB
Niveau 10
22 juillet 2004 à 10:21:41

dites j´ai une question sur la " propreté" d´un code: je voudrais savoir si on peut travailler avec des coordonées tout en 3D pour avoir un resultat final en 2D?

lag-it
lag-it
Niveau 10
22 juillet 2004 à 10:28:39

Bien sûr.
Cela n´entache pas la propreté du code :)

CYBER_BOB
CYBER_BOB
Niveau 10
22 juillet 2004 à 11:21:01

ca m´enerve ! !! voici mon code:

/ / header

  1. include < glut.h>
  2. include " tga.h"

/ / fonction redimensionnemnt
void reshape(int w, int h)
{
glViewport(0, 0, ( GLsizei) w, ( GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, ( GLdouble) w, 0.0, ( GLdouble) h);
}

/ / fonction d´affichage
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); / / vide écran

glColor3f(1.0, 1.0, 1.0); / / couleur blanche

glEnable(GL_TEXTURE_2D); / / active les textures
glBindTexture(GL_TEXTURE_2D, 1); / / creation texture

// on trace un carré
glBegin(GL_QUADS);
glTexCoord2i(0, 0); glVertex2i(0, 0);
glTexCoord2i(0, 1); glVertex2i(0, 600);
glTexCoord2i(1, 1); glVertex2i(800, 600);
glTexCoord2i(1, 0); glVertex2i(800, 0);
glEnd();

glFlush(); / / on force l´affichage

glDisable(GL_TEXTURE_2D); / / desactive les textures

glutSwapBuffers(); / / on inverse les buffers
glutPostRedisplay(); / / fenetre redessiné
}

/ / fonction gestion du clavier
void clavier(unsigned char key, int x, int y)
{
switch(key)
{
case 27: / / touche ECHAP
glutDestroyWindow(glutGetWindow());
exit(0);
break;
}
}

/ / fonction principale
int main(int argc, char** argv)
{
glutInit(&, argv); / / init GLUT
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); / / double buffering, couleur RGB
glutInitWindowPosition(0, 0); / / position de depart
glutInitWindowSize(800, 600); / / taille fenetre
glutCreateWindow("Love Demo"); / / creation fenetre

// on charge l´image
loadTGA("data\\coeur.tga", 1);

glClearColor(0.0, 0.0, 0.0, 0.0); / / " vidage" noir
glShadeModel(GL_FLAT); / / pas de degradé

glutDisplayFunc(display); / / fonction d´affichage
glutReshapeFunc(reshape); / / fonction de redimensionnement
glutKeyboardFunc(clavier); / / fonction de gestion du clavier
glutMainLoop(); / / boucle GLUT

return 1;
}

mais j´aimerais que le coeur ( l´image) que l´on voit ki occupe tout la fenetre, arrive mais progressivement... je ne sais pas trop comment faire, aucun tutorial n´explique l´animation ! !!
help ! !!

lag-it
lag-it
Niveau 10
22 juillet 2004 à 11:35:11

Pourquoi mets-tu :

glEnable(GL_TEXTURE_2D); / / active les textures
glBindTexture(GL_TEXTURE_2D, 1); / / creation texture

Dans ta DisplayFunc ?
Mets les dans une InitFunc et supprime glDisable( GL_TEXTURE_2D ) .

lag-it
lag-it
Niveau 10
22 juillet 2004 à 11:37:39

Euh non, laisse le glBind dans la fonction display, erreur de copier/collé :)

Mais jette un oeil la dessus : tout est expliqué http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06

CYBER_BOB
CYBER_BOB
Niveau 10
22 juillet 2004 à 11:37:58

pour:
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 1);

j´ai lu un bouquin sur OpenGL et c´est comme ca qu´ils disent de faire, alors je fais comme ca ! !!

JeanYvesYves
JeanYvesYves
Niveau 10
22 juillet 2004 à 11:53:13

glTexCoord2i(1, 1);

FAUX : avec ça tu as une texture d´un seul pixel
-->

glTexCoord2f(1, 1);

et pareil pour les 3 autres
un conseil aussi : le meme que lagit : le glenable dans le init, et pas dans la boucle

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