begin process at 2010 02 09 19:50:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > DEBUT DE JEU EN OPENGL

DEBUT DE JEU EN OPENGL


 Information sur la source

Note :
Aucune note
Catégorie :OpenGL Classé sous :chargerobj Niveau :Débutant Date de création :14/04/2006 Vu / téléchargé :3 486 / 607

Auteur : adess00

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

 Description

Coucou

Alors voici mon 1er code en OpenGL compilé sous dev cpp
Pour l instant rien de special juste des fonctions basiques a completer

Par exemple il y a une fonction pour charger des objets 3D .obj
Ou bien des deplacements avec une camera a la 3e personne

Enfin je vous laisse regarder


 Conclusion

Mais il y a quelques bug
Quand on accelere puis decelere le vaisseau bouge toujours je n est pas encore compris pourquoi
Et si vous voyez de axes d amelioration merci de poster des commentaires

voila en esperant que sa puisse en aider

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 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 luhtor le 14/04/2006 19:41:23

J'arrive pas a compiler, j'ai une erreur de lien sur wglDeleteContext@4. Je pige pas. Tu peux mettre un exe que tu renommes en .ex ?

Commentaire de luhtor le 14/04/2006 19:50:42

Bas pour l'améliorer, faudrait deja que tu évites que sur un pc qui affiche 500 images par seconde, ce soit injouable car beaucoup trop rapide.

Autre chose, les ".h" c'est pas fait pour mettre des fonctions dedans.

Autre chose:
    for (i=0;i!=7616;i+=4)
    {
        glTexCoord2f(0,0);glVertex3f(model[i].x,model[i].y,model[i].z);
        glTexCoord2f(0,1);glVertex3f(model[i+1].x,model[i+1].y,model[i+1].z);
        glTexCoord2f(1,1);glVertex3f(model[i+2].x,model[i+2].y,model[i+2].z);
        glTexCoord2f(1,0);glVertex3f(model[i+3].x,model[i+3].y,model[i+3].z);
    }

Tu n'iras pas loin avec ce genre de chose. glBegin/glEnd, c'est totalement inefficace. Si tu débutes, regarde les display list, ou les vertex array.

Pour la rigueur, puisque le compilo C ne l'est pas:
glColor4f(1,1,1,1);
à remplacer par: glColor4f(1.0f,1.0f,1.0f,1.0f);
Meme si ca change pas grand chose. Faut juste respecter les types.

Aller ++


Commentaire de adess00 le 14/04/2006 21:33:55

voila un lien pour l exe
http://neuroshok.free.fr/LightReactor.exe

Euh oui mais je vois pas comment faire, faut utiliser un timer ? pour appeler la f° de dessin toutes les 1/25 secondes ?

Pourquoi je peux pas mettre dans les .h mes fonctions ?
Si je met tout dans main.c sa va etre bordelique nan ?

Jvai aller voir les dispays lists

Et pour les types ben pour moi 1 est un float et puis c pas pratique comme ecriture je trouve le 1.0f

Sinon merci de tes commentaires jvai chercher un tuto sur les display lists

a+

Commentaire de luhtor le 14/04/2006 21:44:20

1 n'est pas un flottant. Ya des langages ou tu pourrais pas écrire ca:
float x = 1;
Ca provoquerait une erreur.
Bien sur tu peux mettre 1, mais c'est pas rigoureux. Et point de vue lisiblité, on voit pas que c'est un flottant autrement qu'en regardant le type de la variable.

Autrement, un ".h" c'est fait pour mettre des définitions de fonctions et pas des implémentations.
Donc toutes tes définitions tu les mets dans un fichier mes_fonctions.h par exemple puis toute les implémentation dans mes_fonctions.c.

Sinon, en effet, faut utiliser un timer. Un timer combiner a une vitesse de déplacement.

Commentaire de adess00 le 14/04/2006 21:59:44

Ok maintenant je c a koi sa sert

D apres ce que tu me dit je doit mettre toutes mes fonctions dans un fichier.c
Mais sa va etre illisible !!! Jpourai pas m y retrouver
Et quand je fait plusieurs .c les variables globales ne marchent pas alors j ai mi mes fonctions dans des .h au moins c est clair
Pour l instant sa va mais quand je vais ameliorer mon prog le nombre de f° va augmenter et jpourrai pas m y retrouver dans un seul fichier

Il y a peut etre  d autres methodes je sais pas

En tout cas merci de ton aide

Je viens de compreendre l utilité des playlists c est pratique pour un objet fixe mais pour du morphing sa reviendrai au meme muisqu il faudrait reconnstruire le polygon mais j en suis pas au deformations de mon vaisseau jvai donc le playlister pour l instant

a+ !

Commentaire de luhtor le 14/04/2006 22:13:28

Mais lol, je sais de quoi je parle.
"dans des .h au moins c est clair" ca, CA NE MARCHE PAS !
Si deux fichiers font appel au fichier .h, tu auras "error function redefined" ou un truc du genre.
Et par définition du ".h", tu vas pas avoir un ".h" par fonction !!
Si t'as 200 fonctions, tu vas pas te trimbaler avec 200 fichiers !
Moi je te parle pas d'un seul fichier. Je te dis de séparer tes fonctions dans un .c et tu mets les définitions de fonction dans le .h, mais tu ne sembles pas comprendre ce que je dis. Il faudrait que tu jettes un coup d'oeil aux tutoriaux C.

Sinon en effet, pour un morphing c'est pas utilisable les display list. Mais c'est pour ca qu'il existe les vertex array. C'est ca qu'il faut utiliser pour afficher des objets.
Juste pour te donner une idée, ca va 10 ou 100 vois plus vite que begin/end, ca dépend du nombre de polygones que tu affiches.

Pour tes variables globales. Tu les déclares en global dans ton fichier principal:
int x = 0;

puis dans tes fichiers .c:
extern int x;

Commentaire de adess00 le 14/04/2006 22:54:38

vertex array ?
Jvenai de faire les display lists lol
C pas grave je verrai plus tard

Je comptai pas mettre une fonction par fichier mais je les regroupe juste
Pour l instant sa peut parraitre vide ouai mais j anticipe

J ai compris pour les .c mais ce qui est vraiment pas pratique je trouve c est d etre obligé de redeclarer les variables globales
Sa me fait vraiment prout sa

Bon j y retourne :)

Commentaire de luhtor le 14/04/2006 23:35:47

Quand tu seras confrontés au problème des .h, tu comprendras :) que t'as pas le choix.

Commentaire de Kirua le 15/04/2006 15:44:55

Pour rendre tes variables globales visibles depuis différents .c, renseigne-toi sur le mot clef "extern" du langage C, ça va faire des miracles :).

Bonne continuation!

Commentaire de Kirua le 15/04/2006 15:45:26

Wouuuuuups, désolé, j'avais pas vu qu'il t'en parlait, je n'ai lu que jusque 2-3 messages avant le dernier, au temps pour moi.

Commentaire de adess00 le 15/04/2006 15:47:39

lol c pas grave
je l utilise et sa marche mais la j ai un autre probleme que je ne comprend vraiment pas

Sa deconne pour les fonctions. Il me sort undefined reference to Load
Pourtant j ai declarer ma f° Load dans fonction.h que main.c inclue donc et la fonction load se trouve dans chargement.c

Apparemment il ne trouve pas la fonction mas je ne comprend pas pourquoi ?

Commentaire de luhtor le 16/04/2006 13:09:53

Evidemment,  mais si tu cherchais sur le net, tu n'aurais pas a attendre que qqn réponde.
dans ton fonction.h:
la définition

dans ton fonction.c
#include "fonction.h"

et l'implémentation de ta fonction.

Commentaire de dletozeun le 17/04/2006 16:46:03

lol je sens qu'il est en pleine detresse!
Moi je post juste pour dire que j'ai me bien le :

kirua-> "au temps pour moi"

pourquoi pas "Oh taon pour moi"
Variante     " au tant pour mois" ?! lol j'arrete.Sinon ce serait mentir en cochant la case 'J'approuve la charte de bonne conduite que je viens de lire ci-dessus.'

Commentaire de Kirua le 17/04/2006 19:42:34

http://www.langue-fr.net/index/A/au_temps-autant.htm

autre chose ?

Commentaire de dPompei2 le 18/04/2006 20:24:21

ADESS00 je te donne un exemple de comment sa fonctionne:

mes_maths.h:
============
#ifndef MES_MATHS_H
#define MES_MATHS_H

int addition( int a, int b );
int soustraction( int a, int b );

#endif /* MES_MATHS_H */

mes_maths_ou_meme_un_autre_nom.c:
=================================
#include "mes_maths.h"

int addition( int a, int b )
{
    return a + b;
}

int soustraction( int a, int b )
{
    return a - b;
}

main.c:
=======
#include "mes_maths.h"

int ma_variable_globale = 0;

int main( int, char ** )
{
    int reponse = 0;
    reponse = addition( 1, 1 );
    reponse = soustraction( reponse, 1 );
    return 0;
}

main.h:
=======
#ifndef MAIN_H
#define MAIN_H

extern int ma_variable_globale;

#endif /* MAIN_H */


maintenant dans chaque fichier ou tu utilises ma_variable_globale, tu dois faire #include "main.h" au debut ok ?

conseil: entoure toujours tes .h par les #ifndef #define et #endif, sa t'evitera des prolemmes ;)

Commentaire de dletozeun le 18/04/2006 22:26:14

Looool ok...au temps pour moi!
Je me coucherais moins con ce soir!

Commentaire de adess00 le 19/04/2006 03:36:19

ok merci pour ton aide dPompei2
Je vais essayer

Commentaire de dPompei2 le 19/04/2006 16:34:29

Pas de problème, j'étais débutant moi aussi un jours :)

Si t'as encore des questions ou besoin d'aide, demande moi par MP quand tu veux ;)

 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 : 0,484 sec (4)

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