begin process at 2010 02 10 13:47:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > VORTEX [OPENGL DEVCPP]

VORTEX [OPENGL DEVCPP]


 Information sur la source

Note :
Aucune note
Catégorie :OpenGL Niveau :Initié Date de création :02/10/2004 Date de mise à jour :08/10/2004 23:19:59 Vu / téléchargé :3 618 / 530

Auteur : BeLZeL

Ecrire un message privé
Site perso
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
D'après la source de Kleidp (http://www.cppfrance.com/code.aspx?ID=25951)
D'a près les calculs de Shaun Dore (cf doc)
Conversion en OpenGL.

Duron 1GHz, 256 Mo, GeForce 2 MX 32Mo : Environ 57 FPS
Athlon 3200+, 512 Mo, ATI Radeon 9600XT : Environ 147 FPS
(Mesurées avec Fraps 2.1.0, en mode initial)

Touches :
F1 : changement d'effet
F2 : changement de texture
F3 : changement incrémentation dans la boucle (on remplit une case mémoire sur 2 ou 4)
F4 : changement de chargement de texture (glTexImage2D en fast ou gluBuildMipmaps en slow)
F5 : changement de la taille de l'occlusion (les bords noirs)
F6 : changement "l'angle"


 Conclusion

Le vortex est géré comme une texture. Elle est appliquée à un seul polygone, placé en face de l'écran.

Le fait de géré le vortex selon les coordonnées UV (fonction glTexCoord2D) ralenti le programme et offre une qualité d'image inférieure. J'ai tout de même mis le code réalisé avec l'archive.

Plus d'infos, plus de codes, http://belzel.free.fr

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   doc
    • fxtunmap.docTélécharger ce fichier [Réservé aux membres club]92 160 octets
  •   Version glTexCoord
    • main.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 858 octets
    • tex.bmpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier196 664 octets
    • vortex.bmpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier196 664 octets
    • vortex.devTélécharger ce fichier [Réservé aux membres club]993 octets
    • vortex.exeTélécharger ce fichier [Réservé aux membres club]16 384 octets
  • main.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 780 octets
  • tex.bmpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier196 664 octets
  • vortex.bmpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier196 664 octets
  • vortex.devTélécharger ce fichier [Réservé aux membres club]999 octets
  • vortex.exeTélécharger ce fichier [Réservé aux membres club]16 896 octets

Télécharger le zip


 Historique

08 octobre 2004 23:20:00 :
Version 1.1 : Bug mémoire résolu : le programme prend environ 5 à 10 Mo en mémoire. Affichage pleine fenêtre Ajout de quelques variantes pour les effets. Affichage aléatoire de couleurs Optimisation du code : x2 pour les FPS Comme tjrs, ce qui prend du temps de calcul, c'est de "recalculer" la texture.

 Sources du même auteur

Source avec Zip Source avec une capture MODÈLE 3D TEXTURÉ [OPENGL & ASE & RAW & DEVCPP]
Source avec Zip Source avec une capture LIMITER NOMBRE FPS [OPENGL & QUERYPERFORMANCE & DEVCPP]
Source avec Zip [HOOK CLAVIER] FICHIER TEXTE AVEC GESTION DES DEAD KEYS [DEV...
Source avec Zip Source avec une capture LOAD TGA / OPENGL [DEV-C++ 4.9.5.0]
Source avec Zip Source avec une capture LOAD JPG / OPENGL [DEV-C++ 4.9.5.0]

 Sources de la même categorie

Source avec Zip JEU DE DAMES 3D par vbclaude
Source avec Zip CHARGEMENT DES TEXTURES EN OPENGL par Jackyzgood
Source avec Zip Source avec une capture OPENGL - UN PEU DE NEIGE... par underprog
Source avec Zip Source avec une capture JEU DE LA VIE 3D OPENGL AVEC GESTION SOURIS par fratleym
Source avec Zip Source avec une capture SPEAD RACER par jngl

Commentaires et avis

Commentaire de BeLZeL le 02/10/2004 16:10:50

On double les perfs en remplacant

gluBuild2DMipmaps ( GL_TEXTURE_2D, GL_RGB, 256, 256, GL_RGB, GL_UNSIGNED_BYTE, texture);

par

glTexImage2D ( GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, texture);

On peut également améliorer les perfs en diminuant le nombre de traitements. Ici, texture de 256*256, donc forcément ca prend du temps pour les calculs.

Commentaire de NoRabbit le 02/10/2004 22:02:16

sympa !

Commentaire de BeLZeL le 02/10/2004 23:12:43

Merci

Note pour moi-même :
J'ai recréé une texture pour chaque nouvel affichage.
-> Conserver la texture pour chq nouvel affichage mais jouer plutôt sur les UV.

Commentaire de Kirua le 03/10/2004 12:07:21

ça donne en effet assez bien, par contre ça rame un brin, alors que j'ai recompilé avec "glTexImage2D". quoiqu'en effet, ça rame moins dans ce cas. et qd je dis que ça rame: nVidia GeForce3 Ti200, P4 2.26, 768Mo de DDR, alors bon quoi :p

en fait, je me demande si c'est un bon choix que recréer une texture à chaque frame. est-ce que c'est pas possible de juste appliquer des déformations à la texture? j'en sais trop rien à vrai dire ^^

Commentaire de Kirua le 03/10/2004 12:12:22

"(float)sqrt( x*x + y*y )"

il y a une fonction dans cmath qui fait ça: hypot(x, y);

http://www.sthoward.com/docs/libm_22.html

ça ne change ... rien? mais voili voilou ^^

Commentaire de Kleidp le 03/10/2004 13:56:50

Belle convertion :)

Par contre j'ai trouvé un bug qui fait ramer :
le programme augmente constament en mémoire, peut être parce que tu recréer une texture à chaque frame.

Commentaire de BeLZeL le 03/10/2004 17:09:50

Bcp plus de problèmes que je ne le pensais ;-)

Kirua : effectivement, ca ne change rien, peut être même que c'est #define hypot(x,y) sqrt(x*x+y*y). Je plaisante :) Le pb de vitesse est dû uniquement aux 256*256 calculs à réaliser. Mais c'est bizarre que ca rame chez toi, je regarderais cette semaine sur mon PC de compet'.

Kleidp : Effectivement, il y a apparemment un gros pb de mémoire en recréant à chaque fois une nouvelle texture. C'était la première idée qui m'ait venu à l'esprit.

Je sais comment créer une texture (gluBuild... ou glTexImage...) mais pas moyen de supprimer cette texture de la mémoire (sauf en quittant le prog) ! J'ai rien trouvé dans la doc. Donc cette méthode est à proscrire.

Je vais modifier le programme en conséquence. Je vais jouer sur les UV (ce sont les coordonnées des textures, et non la texture elle-même, fonction glTexCoord2f), pour faire une sorte de morphing. Ca me permettra de ne pas faire 256*256 calculs, mais de le faire sur un quadrillage de l'ordre de 10*10 ou 100*100 (selon la qualité que l'on veut).

Pour le fading sur les côtés, je peux jouer sur la couleur des Vertex (fontion glColor3f).

Le seul soucis, c'est qu'il y aura plus de polygones à afficher (10*10 ou 100*100). J'ai essayé avec 256*256 points et ca marche. On ne pourra pas afficher la texture sur un SEUL polygone.

Si j'arrive à faire ce que je souhaite (ce qui n'est pas gagné), on peut multiplier les FPS par 5. Je ferais ca pendant la semaine, donc si ca vous intéresse, revenez samedi prochain ;)

Commentaire de Wett le 03/10/2004 19:14:45

glDeleteTextures( nb, *id );
-> pour détruire une ou plusieurs textures... ;)
Sympa sinon ^^

Commentaire de syncppfrance le 04/10/2004 11:02:34

heu, il fo savoir que glTexImage2D ne doit pas etre utilisé dans une boucle sauf si:

-il y a plusieurs textures à afficher, et dans ce cas il existe quelques methodes d'optimisation en triant par texture les meshs.

- si on fait une texture procedurale

voila je repond à la question de Kirua
et pour Belzel, pourquoi tu n'utilises pas la matrice de la texture à la place?

Commentaire de syncppfrance le 04/10/2004 11:02:40

heu, il fo savoir que glTexImage2D ne doit pas etre utilisé dans une boucle sauf si:

-il y a plusieurs textures à afficher, et dans ce cas il existe quelques methodes d'optimisation en triant par texture les meshs.

- si on fait une texture procedurale

voila je repond à la question de Kirua
et pour Belzel, pourquoi tu n'utilises pas la matrice de la texture à la place?

Commentaire de Kirua le 04/10/2004 17:34:04

pourquoi ?

Commentaire de syncppfrance le 04/10/2004 21:56:07

pourquoi quoi?

Commentaire de Kirua le 04/10/2004 21:59:37

"il fo savoir que glTexImage2D ne doit pas etre utilisé dans une boucle sauf si:..."


tu l'affirmes. je suppose que c'est vrai. mais moi j'ai besoin d'être convaincu, il faut qu'on m'explique pourquoi c'est comme ça, ça me permet de bcp mieux retenir, et puis aussi d'extrapoler dans des situations apparentées.

si tu sais pq, je te demande juste de l'expliquer. merci ;)

Commentaire de syncppfrance le 05/10/2004 10:14:28

justement, parceque ca bouffe du FPS.

mais je tiens a signaler une erreur de ma part ds le post precedent; glbindtexture() c lui qui permet de dire a opengl quel texture utiliser pour ce que l'on doit dessiner, evidement glbindtexture aussi bouffe du fps, et c'ets pour cette raison quil fo autant que possible trier les meshs par texture pour en faire le moins possible.

si on a qu'une seule texture il faut donc faire ca:

chargement de la texture(); //glTexImage2D() inclu
designeraopengllatextureaappliquer(); //glbindtexture();

boucle:
affiche mon ou mes mesh(); //qui utilise cette texture
fin boucle

on delete tout();


---------- si on a plusieurs textures le shema ideal (dans le cas ou on a une seule texture par type de mesh) -------
chargement des meshs(); //ca depend de vous ca!!!
chargement des textures(); //glTexImage2D() inclu


// jai detaillé la boucle sans optimisation structurelle
boucle:
designeraopengllatextureaappliquer(); //glbindtexture();
afficher les meshs qui ont cette texture();
designeraopengllatextureaappliquer(); //glbindtexture();
afficher les meshs qui ont cette texture();
...
fin boucle

on delete tout();

Commentaire de syncppfrance le 05/10/2004 10:17:32

si vous avez besoin d'aide sur opengl je vous invite a vous inscrires un profil sur www.glinfrench.fr.st

Commentaire de Kirua le 05/10/2004 17:25:09

oki, en fait c pas à cause de glTexImage2D, c'est vrai pr toutes les fcts OpenGL.

Commentaire de syncppfrance le 05/10/2004 19:22:58

pour bp oui,, mais tous code ecrit bouffe forcement du fps, c logique!!!
mais certaine plus que dautre
comme glbindtexture(),glbegin(), glrotate(),...

fait un tour sur le site ti verra ya un forum avec bp de personne qui sont pret a taider!!!!

Commentaire de BeLZeL le 08/10/2004 22:37:42

Bon, merci pour toutes ces explications.

Pour la nouvelle version (dispo très bientôt) :
J'ai utilisé glTexImage2D comme avant. J'ai juste retiré la fonction glGenTextures qui bouffe toute la mémoire. Là le prog doit prendre 10 Mo en mémoire.

Impossible de jouer sur les UV, car il y a des pb de raccords entre les textures. Je mettrais quand même les sources, et le "hack" que j'ai fait pour estomper le problème.

Sinon, j'utilise la matrice de la texture, mais on doit ensuite la remettre en mémoire avec glTexImage2D.

Commentaire de LordBob le 09/10/2004 21:25:47

très jolie !!!

Commentaire de BeLZeL le 10/10/2004 17:09:48

Merci :)

J'ai mis la toute dernière version vendredi soir. Il y a même deux versions. Dites moi si ca semble ramer chez vous ou pas.

Et pour celles et ceux qui ont d'autres méthodes plus efficaces pour afficher un vortex, je suis preneur :)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,065 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales