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

OpengL ... Jeux 2D ...

Manest2
Manest2
Niveau 9
28 juillet 2003 à 13:19:06

Salut,
Bon je développe d´habitude principalement des applications web. Mais là, vu que c´est les vacances et que j´ai un peu de temps ( et pour prendre de l´avance sur mes cours de l´année prochaine) je me suis mis doucement à approfondir l´OpenGL.
J´ai déjà une bonne connaissance de C++, je fais donc quelques tutoriaux trouver à droite à gauche sur le web.
Ok c´est super glut, j´ai une fenêtre, cool un triangle je trifouille un peu, je les bouges dans tous les sens, je les fais clignoter... aucun problème...
C´est la qu´interviens la coupure et le début de mes problèmes.
Bon maintenant on va afficher un perso 2D à l´écran, ouaiii. Je me dis que c´est sûrement pas si dur. J´imaginais bien la fonction qui permettrait de charger une image sur un buffer, ou l´on veux, puis de tous balancer à l´écran... Je cherche... je cherche... aucun résultat.
Donc plusieurs question.

- Comment charger un sprite à l´écran avec opengl ( voir glut)
- J´ai cru comprendre que l´emploi d´une SDL était indispensable pour faire cela. Qql à des précisions ? kesako ?

Je me suis pas vraiment penché sur la 3D, mais au vu du boulot pour afficher et centrer de simple formes géométrique, ca fait flipper ; )
des trucs m´echappent.
- comment utiliser un modele 3DSMax dans le code? Faut t´il le charger? Si oui comment ca se passe?
- comment faire pour charger telle ou telle animation du perso à tel ou tel moment ? J´imagine bien que se sont les infographistes qui font le boulot d´anim, mais après j´ai du mal a voir le processus d´interaction avec le code.

Bon c´est un peu long et j´ai plein d´autre questions mais si qql pouvais m´éclairer un chouia ca serait cool.

Ps : je travail en général sur Linux, donc venais pas me parler de DirectX. Par contre pour info je voudrais bien savoir si les processus qui répondent à mes questions sont les même avec DX et OpenGL.

hs_dino
hs_dino
Niveau 9
28 juillet 2003 à 13:37:50

:d) Comment charger un sprite à l´écran avec opengl ( voir glut)

Je n´utilise pas Glut. J´ai fait un loader de TGA(relativement simple à coder) et ensuite avec glTexture ca va tout seul.

:d) comment utiliser un modele 3DSMax dans le code? Faut t´il le charger? Si oui comment ca se passe?

Il faut faire un loader de modeles qui charge le format de ton choix ensuite tu balances les faces, les vertex et textures dans l´API a chaque frame.

:d) comment faire pour charger telle ou telle animation du perso à tel ou tel moment ?

Tout doit etre dans ton modele 3d, selon la technique d´animation choisie tu dois avoir chaque frame dans le model, il te reste a balancer dans l´API les vertex de la frame que tu as choisi.

Jette un oeil ici : http://www.gametutorials.com

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

Manest2
Manest2
Niveau 9
28 juillet 2003 à 13:52:25

humhum... dur dur tout ca :=)

Par contre pour la 2D, ca reste toujours tres abstrait... " un loader de TGA" ? Y a pas des trucs plus facile a mettre en oeuvre??? je veux bien que ca soit facile a programmer mais encore faudrais que je comprenne ce que c´est ; )

En fait le plus simple ca serait que je trouve le code source d´un jeu de plateforme ou autre, en 2D bien fait ( et commenté surtout).
Pas un truc de 50 fichiers, juste un truc soft.
Si qql a ca dans ses tiroirs...

Le site que tu m´as fillé a l´air pas mal mais leur " Game Tutorials" sont un peu leger quand meme . .. vais voir du coté des tut opengl

Manest2
Manest2
Niveau 9
28 juillet 2003 à 13:56:18

hum... chapeau bas pour ton site perso au fait...
les screen sont magnifiques...

JeanYvesYves
JeanYvesYves
Niveau 10
28 juillet 2003 à 15:58:12

Sous Linux, utilise QT :)
ou alors reprogramme un truc qui charge un fichier Bitmap, c´est assez simple :)
tiens, je t´envoie une fonction qui charge une texture sous Linux.
J´ia tout un TP d´image fait sous Linux avec GL si ça t´intéresse --> MSN.

unsigned int textident[NBTEX];
// note : < => Gluint

void ChargeTex(char* s,int num)
{
QImage tex1, buf;
if ( !buf.load(s))
{ // charge l´image
printf("texture n´existe pas\n");
exit(-1);
return;
}
GLuint toto=GL_RGB;
if ( buf.depth()==32) toto=GL_RGBA;
tex1 = QGLWidget::convertToGLFormat(buf);
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glBindTexture(GL_TEXTURE_2D,textident[num]);

gluBuild2DMipmaps(GL_TEXTURE_2D,3,tex1.width(),tex
1.height(),toto,GL_UNSIGNED_BYTE,tex1.bits());

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTE
R,GL_LINEAR_MIPMAP_NEAREST); // filtre linéaire

glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MO
DULATE);
printf("texture chargee. taille : %d, %d\n",tex1.width(),tex1.height());
}

Voila :) excuse pour les sautes de ligne : C le copier coller vers JV.COM :)

JeanYvesYves
JeanYvesYves
Niveau 10
28 juillet 2003 à 16:07:55

Pour la 2D, j´y avais pensé aussi :)

mais si tu as OpenGL qui marche, je te conseille de la 3D masquée :

tu dessine que sur le plan tel que z = 0.
et tu place ta caméra orthogonalement.

Pour tes sprites : tu places des Quads texturés ( pas tres durs a faire, et surtout : 1 bricole pour la carte graphique)
Avec un effet Alpha pour gérer la transparence ( que le sprite ne soit pas réellement carré)
Tu peux apres te servir de tous les avantages de cette technique pour :

- gérer priorités ( genre sprites plus haut sont un peu plus loin) en assignant une toute petite valeur Z et en te servant du Z buffering ( inclus dans les cartes graphiques : donc ça perd pas de temps)
- zoomer l´écran facilement : en approchant la caméra
- scroller tres facilement : la déplacer en X et en Y
- rotation aisée de sprites : bouger les coordonnées des quads.

Bref, tout ce que tu aurais du programmer est déja implémenté en Hard si tu te sers de la 3D.

Manest2
Manest2
Niveau 9
28 juillet 2003 à 19:21:41

pffpff j´ai un peu de mal a suivre :)
La fonction que tu m´as donné sert a charger une texture, c´est ca? mais... je comprend pas en quoi ca peu m´aider... une texture ca sert a etre collé sur quelque chose non? moi ce que je voudrais c´est de creer mes sprites 2d avec un logiciel de dessin et de les charger tel quel sur mon buffer... un peu comme dans rpg maker ( attention la comparaison :))
Je pense que c´est a cela que tu repond dans ton dernier post mais je ne comprend pas ce qu´est un " Quads texturés" . .. ha si, en l´ecrivant, je comprend ; ) autant pour moi. Bon sa s´eclaire un peu au fur et a mesure que j´´ecrit :) :)

donc pour resumer je fais mes sprites ( qui seront en fait une texture), que j´applique à des formes toutes connes... style carrés, c´est ca? Ca me parrait pas super dur... je vais essayer :)
par contre pour que tout mes trucs ne soit pas carré, je vais forcement devoir definir une couleur de transparence sur les sprites comme tu dit. Je sais pas trop comment c´est géré ca... va falloir que je regarde de plus pret ces histoire de texture :) :)
Bon en tout cas merci, j´etais pas sur la bonne vois, ca va mieu la je pense :)

Kouic
Kouic
Niveau 9
28 juillet 2003 à 19:34:31

Et pourquoi ne pas le faire avec SDL ?
Cette librairie est tres simple d´utilisation et tres efficaces.
Pour la 2D elle n´a pas grand chose a envier a DirectX car elle gere la video, les peripheriques d´entrées, le son, le reseau.
Jete donc un coups d´oeuil sur les exemple sur le site officiel pour te faire une idée.

JeanYvesYves
JeanYvesYves
Niveau 10
29 juillet 2003 à 15:08:44

pour la transparence, tu mets du RGBA : l´alpha ets le coeff de transparence :
a 0 il est opaque, a 255, il est invisible : entre les 2, il est transparent ( tu peux faire une fantome par exemple)
tu mets le noir autour de ton sprite en A=255 et ton sprite en A = 0

puis tu mets un glEnable(GL_BLENDING) si ma mémoire est bonne.

il faut aussi définir la glBlendFunc; c´est vite fait.

Ensuite tu poses des quads ( donc bien des rectangles dans l´espace, et tu les texture avec ton sprite grace a glTexCoord2f juste avant chaque appel de glVertex2f

Manest2
Manest2
Niveau 9
29 juillet 2003 à 19:08:48

yop, presque tout compris :)
des que j´ai un peu de temps j´essais.
par contre ca pose pas des problemes pour les colisions si c´est que des carrés texturés???
il ne faudrais pas prendre en compte la couleur transparente... ou alors cela n´est il pas vraiment genant?

reno_
reno_
Niveau 10
29 juillet 2003 à 22:04:02

manest2, si tu veux faire de la 2D avec un langage très souple, essai cette adresse :

http://www.blitzbasic.com/

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