FORUM PS3, PSP & PS2 » Making Of » OpenGL - Dev-C++

En ligne > Il y a 30 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
 Page :  1  2  3
Page Précédente 
OpenGL - Dev-C++
 
n°1946
Profil : Internaute
Posté le 04-02-2007 à 18:37:54   answer
 

Bonsoir !  
 
Je viens de découvrir cette semaine l'open GL, très intéressé par cette bibliothèque qui permet de faire de la 3D . Je souhaitais programmer chez moi..
 
J'utilise le logiciel Dev-C ++ pour programmer en C ++ (logique) et je suis allé sur le site www.nehe.com pour télécharger les codes sources qui ne marchent pas ! J'ai inclus toutes les biblotheque glu.h , gl.h mais je me retrouve avec une avalanche d'erreur que je ne saurais débugger car je n'ai aucune connaissance en la matière, si quelqu'un utilise Dev C ++ pourrait t-il m'aider les problemes sont

Code :
  1. [Linker error] undefined reference to `glViewport@16'

en faite pour tout mes appels à Gl j'ai un message de ce type..
 
J'ai fais des recherches pour apprendre à zéro l'openGL mais je crois que ca demande pas mal de notion en mathématique et vu que je suis très mauvais aie aie.
 
Je crois que je vais abandonner... car ca fait 5 jours que je cherche et j'ai toujours rien appris..


Message édité par zell789 le 04-02-2007 à 18:38:19
n°1949
Profil : Internaute
Posté le 04-02-2007 à 20:22:21   answer
 

C'est un problème lors de l'édition des liens comme Dev-C++ te le dis en te signalant : [Linker error]
 

Citation :

J'ai inclus toutes les biblotheque glu.h , gl.h


 
ça ce ne sont pas des bibliothèques juste les fichiers d'en tête qui donnent les définitions des fonctions, les bibliothèques dans le cas d'OpenGL c'est opengl32.lib, glu32.lib etc
Il faut que tu cherches où sont situées ces fichiers, voire que tu les télécharges et que tu spécifies leur chemin à Dev-C++ et là je ne connais pas ce logiciel donc je ne peux pas t'aider. En tout cas ne baisse pas les bras sur ce bête problème de configuration ça serait dommage tu vas voir OpenGL c'est compliqué mais passionnant :)

n°1950
Profil : Internaute
Posté le 04-02-2007 à 21:00:00   answer
 

Citation :

ça ce ne sont pas des bibliothèques juste les fichiers d'en tête qui donnent les définitions des fonctions, les bibliothèques dans le cas d'OpenGL c'est opengl32.lib, glu32.lib etc


 
J'ai également inclus les .lib je crois que je devrai repartir de tout à zéro ce qui me permettra de comprendre les problèmes ou j'ai le droit de chercher un peu...en tout cas c'est dommage j'aurai voulu avoir des codes "tout fait" pour tester certaines choses
 
Ce qui m'énerve c'est que ça doit etre un problème tout bête !!
 

Citation :

En tout cas ne baisse pas les bras sur ce bête problème de configuration ça serait dommage tu vas voir OpenGL c'est compliqué mais passionnant :)


 
Tu as raison , je vais essayer de ne pas abandonner car OpenGL a l'air passionnant .. ;)  
 
 

n°1951
Profil : Modérateur
Posté le 05-02-2007 à 06:32:39   answer
 

Zeross a raison, il est difficile d'avoir un environnement de développement qui fonctionne, mais une fois que c'est bon, tu peux te concentrer sur le contenu, et là, je ne pense pas que tu seras déçu.
 
Je suppose que tu travailles sous Windows (sous Linux, les problèmes sont un peu moins gros avec la plupart des distributions qui installent ça très bien). Je ne connais pas Dev-C++, donc je vais avoir du mal à te donner des conseils (pour ma part, j'utilise cygwin avec gcc/g++ sous Windows pour le développement, ça marche plutôt bien, et la plupart des trucs s'installent d'eux-même).
 
Il semblerait que tu ne sois pas tout seul avec ce problème avec Dev-C++. Certains l'ont résolu en allant dans le menu projet, 'project options', onglet 'general', et en mettant Win32 GUI comme type d'application.
 
Par ailleurs, comment compiles-tu ton programme ?
 
Si c'est fait semi-automatiquement, vérifie que glu32, glut32 et opengl32 sont présentes dans la liste de fichiers à lier à ton programme (dans Linker options, semble-t-il, sous Dev-C++... "-lglu32 -lglut32 -lopengl32" )
 
Si tu le fais en ligne de commande, il doit apparaître les librairies OpenGL et Glut, et l'ordre a parfois une importance (mêmes chaîne qu'au-dessus à mettre dans la directive de compilation pour la phase de liaison)
 
Bon courage, et n'hésite pas à revenir chercher de l'aide, ce serait dommage de s'arrêter à ce genre de problèmes techniques qu'on oublie par la suite (enfin pas toujours, parce que ça continue à merder de temps à autre parce que les librairies ne sont pas dans le bon ordre ou compilées de la bonne façon, c'est parfois à s'arracher les cheveux pour avoir seulement un truc qui compile).

n°1952
Profil : Internaute
Posté le 05-02-2007 à 15:13:14   answer
 

Je développe en OpenGL sous dev-c++ Windows.
Est-ce que les fichiers gl.h et glu.h sont bien situés dans un répertoire include/GL situé dans le répertoire d'installation de dev-c++ ?
As-tu la dernière version de cet EDI (4.9.9.x) ?
Sur mon ancien système, j'avais des erreurs de compilation des programmes du bouquin "beginning opengl game programming" que je me suis acheté.
Depuis, j'ai fait une grosse MAJ hardware, avec réinstallation de win xp, et puis réinstall de dev-c++, et je n'ai plus aucune erreur.
Comme quoi, des fois au lieu de se prendre la tête, une réinstallation de l'EDI, ça le fait.
Ce qu'il faut savoir, c'est que l'équivalent des .lib de VC++ en dev-cpp sont les fichiers libxxx.a situés dans le répertoire lib du répertoire d'installation
de dev-cpp.
Donc effectivement, comme le souligne Koren, il faut bien mettre les options de compilation -lopengl32 -lglu32 -lglut32, mais il faut vérifier que les fichiers correspondant existent bien aussi.
Exemple : pour -lopengl32, il doit exister un fichier libopengl32.a dans le répertoire lib du répertoire d'installation de dev-c++.
J'ai compilé tous les "lessonxx" des tutoriels de Nehe, peux-tu m'en citer un en particulier qui te pose pb ?
Parmi les 1ers (lesson1 jusqu'à 10) c'est OK, ou c'est déjà pas bon ?
Je ne sais pas si tu as remarqué, mais à part quelques exceptions, tu peux prendre les fichiers sources spéciaux pour dev-c++ au bas de chaque page de tutoriel.
Dans dev-c++ tu as aussi une option d'importation de projet VC++ pour les tutoriels où les fichiers sources spécifiques à cet EDI ne seraient pas disponibles.
 
Si on fait le point ensemble des caractéristiques ( options de comp., includes, etc ...) de tes .dev problématiques, avec ceux des miens, je pourrai très certainement t'aider à les faire compiler.
Ils passent tous chez moi.
N'hesite pas :hello: !
 
Pour les débuts, peut-être que : http://www.siteduzero.com/tuto-3-6 [...] pengl.html et toutes les pages suivantes peut t'aider !
Y'a de l'interfaçage avec la SDL, mais je pense que tu peux trier qui fait quoi sans trop de pb.
 
Sinon, pour les math effectivement, va falloir s'y mettre à un moment ou à un autre. Matrices, trigonométrie, vecteurs, etc ... :D ! Je te rassure, je suis comme toi.
Sauf que les math ça fait beaucoup moins ch... quand tu comprend la mise en application dans des domaines intéressants, contrairement aux exemples vagues de l'école (expérience inside  :whistle: ) !


Message édité par cbeny38 le 05-02-2007 à 15:28:23
n°1953
Profil : Rédacteur PF
Posté le 05-02-2007 à 19:05:13   answer
 

Il me semble que Dev c++ a un gestionnaire de package et qu'il suffit de choisir le package Opengl pour le retrouver installé comme il faut et utilisable directement (lors de la création d'un nouveau projet, il faut choisir un projet de type Opengl)
 


---------------
Toute l'actualité PS3, PSP et PS2 sur Playfrance.com
 
PSN : Halouf
Wii : 8216 1846 7242 3813
n°1954
Profil : Internaute
Posté le 05-02-2007 à 19:10:34   answer
 

cbeny38 & Koren => exact je n'avais pas mis dans les options du compilateur les -lopenGl32 , -lglu32 etc etc.. voila surment pourquoi cela ne marchait car en prenant le programme 'pré-tapé' de Dev-C++ dans leurs librairies,le programme marche ! ;)
 
Surement car le programme 'pré tapé " n'utilisait pas GLUT ! Il faudra que je vérifie si les lib sont également bien à leurs places
 
Cbeny38 -> Il s'agit de la 2eme lecon avec un simple ploygone non coloré il me semble
 
Je ne pourrais pas t'en dire plus (et si j'y suis arrivé) car mon pc a été envoyé en réparation car il était infecté par un virus, c'est très dommage !

n°1955
Profil : Modérateur
Posté le 06-02-2007 à 01:59:37   answer
 

zell789 a écrit :

car en prenant le programme 'pré-tapé' de Dev-C++ dans leurs librairies,le programme marche ! ;)


Félicitations ! :bravo:
 
Maintenant, tu n'as plus qu'à t'amuser avec. Et si quelque chose n'est pas clair (même si les tutoriels NeHe sont excellents, c'est en grande partie comme ca que j'ai appris moi-même), tu sais où tu peux venir poser tes questions...
 

zell789 a écrit :

Surement car le programme 'pré tapé " n'utilisait pas GLUT ! Il faudra que je vérifie si les lib sont également bien à leurs places


Si ca compile, elles y sont. Et ne t'inquiète pas pour glut, d'une part tu n'en aura pas forcément besoin (c'est surtout un gestionnaire pour dessiner la fenêtre et gérer le clavier, mais si tu as autre chose, ce n'est pas utile... pour ma part, j'utilise souvent SDL si c'est un petit programme OpenGL sans interface et FLTK si je veux des boutons et des contrôles de partout :) ), et d'autre part, j'ai rarement vu OpenGL installé sans Glut, donc je suis persuadé que c'est bon si tu en as besoin.

n°1956
Profil : Internaute
Posté le 06-02-2007 à 12:49:41   answer
 

Citation :

Félicitations ! :bravo:
 
Maintenant, tu n'as plus qu'à t'amuser avec. Et si quelque chose n'est pas clair (même si les tutoriels NeHe sont excellents, c'est en grande partie comme ca que j'ai appris moi-même), tu sais où tu peux venir poser tes questions...


 
Comme expliqué au dessus, le programme n'utilisait pas GLUT donc je pense que toute les librairies y étaient sauf GLUT car l'erreur se produisait quand le programme utilisait GLUT :)
 
Il va falloir que j'apprenne un petit peu la programmation Window pour ouvrir les fenetres (Et Glut car à l'iut on utilise Glut pour les fenetres) ensuite je commence vraiment l'OPEN GL  :sol:

n°1957
Profil : Internaute
Posté le 06-02-2007 à 21:56:51   answer
 

Comme vous me l'avez fais remarquer ,j'avais oublié de mettre dans l'éditeur de lien 'lopengl32 , lglut '..;)
 
J'ai réussi à ouvrir une fenetre vide, les préliminaires sont passés je pense ,je m'attaque vraiment à l'open GL demain :)
 
(J'espere que mes faiblesses en maths ne vont pas trop me gener) :sweat:  

n°1958
Profil : Internaute
Posté le 07-02-2007 à 17:42:52   answer
 

J'apprend OpenGL via la site (en francais) : http://glinfrench.apinc.org/index.php3
 
Tout se passe bien jusqu'au chapitre sur le texturing je dois inclure des nouvelles librairies sauf que l'auteur a une version anglaise du produit et je ne me retrouve pas dans les menus étant donnée que j'ai Dev C++ en francais !!  
 
Voici le passage :
 
N'oubliez pas de la déclarer :
Comme pour les libs OpenGL, allez dans Project, Settings. Cliquez dans "Settings For" et mettez "All Configurations". Cliquez sur l'onglet "Link" et dans la zone de texte "Object/library modules :" tapez après opengl32.lib et glu32.lib : glaux.lib.  
 
Je n'arrive pas à trouver le Setting for en francais et l'onglet link (=lien) , ça me gene un peu de poser une question aussi idiote mais je ne trouve pas !
 
Je vous remercie ;)

n°1959
Profil : Internaute
Posté le 11-02-2007 à 22:39:40   answer
 

Je n'ai toujours pas trouvé la solution à ce problème même sur le forum du site même on ne me répond pas, ça m'énerve de bloquer aussi betement comme ça...Tout ça parce que les liens en anglais ne correspondent pas à ceux en Francais....
 
 :(

n°1960
Profil : Modérateur
Posté le 13-02-2007 à 02:33:04   answer
 

Désolé pour la latence... Pour information, c'est pour ce genre de chose que j'évite les versions francisées des logiciels. Parfois les traductions sont mauvaises ou curieuses, et ca n'est pas facile de trouver de l'aide. (je ne sais plus quelle était la versions francaise de Broken pipe, mais il m'avait fallu un moment pour comprendre)
 
Est-ce que tu peux détailler les onglets que tu as ? Je n'ai pas moyen d'installer le soft actuellement, donc je suis un peu aveugle. Je pense que la meilleure chose à faire, c'est de chercher la case où sont indiquées les autres librairies à lier au projet, comme opengl32.lib, etc. Pour le "all configurations", c'est peut-être moins important.

n°1962
Profil : Internaute
Posté le 13-02-2007 à 12:19:38   answer
 

Citation :

 Désolé pour la latence... Pour information, c'est pour ce genre de chose que j'évite les versions francisées des logiciels. Parfois les traductions sont mauvaises ou curieuses, et ca n'est pas facile de trouver de l'aide. (je ne sais plus quelle était la versions francaise de Broken pipe, mais il m'avait fallu un moment pour comprendre)
 
Est-ce que tu peux détailler les onglets que tu as ? Je n'ai pas moyen d'installer le soft actuellement, donc je suis un peu aveugle. Je pense que la meilleure chose à faire, c'est de chercher la case où sont indiquées les autres librairies à lier au projet, comme opengl32.lib, etc. Pour le "all configurations", c'est peut-être moins important.


 
Pas grave pour le temps que j'ai du attendre pour la réponse ;)
 
Pour contourner le probleme j'avais décidé de le réinstaller mais en anglais cette fois, or si l'installation était en anglaise le logiciel est quand à lui devenu en Francais je ne comprend pas  :??:  
 
Je ne peux pas te montrer maintenant mais ce soir peut etre car je suis à l'iut. Par contre j'avais également tenté de lancer l'aide du logiciel car il affiche le menu  en anglais mais je n'ai trouvé aucune de mes sections que je cherchais..
Vraiment bizarre
 
D'ailleurs j'ai envoyé un mail à l'auteur de la leçon en esperant qu'il me réponde

n°1963
Profil : Modérateur
Posté le 13-02-2007 à 14:32:44   answer
 

Si tu ne trouves pas rapidement, je l'installerai sur ma machine... même si dans la mesure du possible, j'aimerais éviter de le faire (je ne sais pas comment il gèrerait les conflits avec MingW et Cygwin pré-installés)
 
Sinon, la langue, c'est un fichier supplémentaire, sans doute, si tu as réinstallé le logiciel par dessus, il doit encore être présent, d'où le logiciel en français.

n°1964
Profil : Internaute
Posté le 13-02-2007 à 18:21:12   answer
 

C'est vraiment sympathique de ta part Koren mais je préfere également pas que tu installes Dev-C++  
 

Citation :

Sinon, la langue, c'est un fichier supplémentaire, sans doute, si tu as réinstallé le logiciel par dessus, il doit encore être présent, d'où le logiciel en français.


 
Exacte je l'ai redemarré en anglais maintenant, et je ne trouve tjrs pas les menus je crois que je vais abandonner ce site... il me dise d'aller dans project,setting or setting n'existe pas j'ai "project option" et encore moins d setting for

Message cité 1 fois
Message édité par zell789 le 13-02-2007 à 18:32:40
n°1965
Profil : Internaute
Posté le 13-02-2007 à 20:34:36   answer
 

Koren : En faite je viens de comprendre le probleme,l'auteur quand il a écrit le passage ou je ne comprend rien, s'adressait à ceux qui utilise Visual C++ d'ou les noms d'onglets incohérent
 
Au moins j'aurai appris quelques chosegrace à cette désinstallation...

n°1966
Profil : Modérateur
Posté le 14-02-2007 à 00:43:50   answer
 

zell789 a écrit :

C'est vraiment sympathique de ta part Koren mais je préfere également pas que tu installes Dev-C++


Ce n'est pas un très gros problème (de toute façon, par acquis de conscience, je devrais tester, d'autant que j'ai toujours pour projet de développer ma propre interface de développement, c'est bon pour avoir des idées).
 

zell789 a écrit :

Koren : En faite je viens de comprendre le probleme,l'auteur quand il a écrit le passage ou je ne comprend rien, s'adressait à ceux qui utilise Visual C++ d'ou les noms d'onglets incohérent


Ah oui, effectivement, du coup, c'est plus clair. Donc tu n'as juste qu'à ajouter glaux dans les librairies avec opengl32, glut32 et cie pour que ça fonctionne. Ca marche ?

n°1970
Profil : Internaute
Posté le 14-02-2007 à 18:33:53   answer
 

Citation :

Ca marche ?


 
Oui je vais (enfin) pouvoir m'y remettre, merci de ton aide ;)
 
Quoique en cour on est entré dans le vif du sujet : manipulation de caméra (que je trouve complexe)shading,highlight,bump, algorithme de gouraud etc tec..... ca devient 'chaud' !
 
 

n°2027
Profil : Internaute
Posté le 25-03-2007 à 18:21:12   answer
 

Bonsoir,
 
Je prépare mon projet d'OpenGL de fin d'année, l'intitulé est simple je dois faire une image comprenant : des transformations(rotation,translation),du "texturing",de la lumière,des interactions au clavier.
 
Avec le projet de fin d'année,les concours pour les écoles d'ingé,et les DST.J'espere vite finir ce projet
 
J'ai pensé à faire une image comprenant des sphère posées sur un sol (qui seraient en faite des billes),j'aimerai avoir des précisions tout de même aux problemes que j'ai rencontré:
 
-Je ne comprend pas bien comment marche les axes,parfois mes spheres tournent autour d'un axe,alors que j'aimerai qu'elles tournent sur elle-même !
 
-Il y a t-il une commande pour mettre une image BMP en fond d'écran,ou je dois créer un carré énorme où je collerai l'image?
 
-Le fait d'activer la lumière,rend t-elle obligatoirement nos objets blancs (ce qui m'arrive actuellement) mes GlColor3d sur chaque sphere n'ont plus d'éffet!
 
Je vais surement rencontrer d'autres problèmes  
 
Merci à tous ( et à toute pour vos réponse) ;)

Message cité 1 fois
Message édité par zell789 le 25-03-2007 à 18:31:16
n°2028
Profil : Internaute
Posté le 25-03-2007 à 18:39:17   answer
 

zell789 a écrit :


 
-Il y a t-il une commande pour mettre une image BMP en fond d'écran,ou je dois créer un carré énorme où je collerai l'image?


Si ce n'est pas de la 2D, tu n'a pas trop le choix, en jouant avec le cadrage (viewport). Tu peux aussi mettre ta scène dans un cube et appliquer tes textures sur chaque face à l'intérieur. Cela dit je ne saisis pas trop l'intérêt d'un fond d'écran dans un espace 3D.

n°2029
Profil : Internaute
Posté le 25-03-2007 à 19:10:07   answer
 

Citation :

Si ce n'est pas de la 2D, tu n'a pas trop le choix, en jouant avec le cadrage (viewport). Tu peux aussi mettre ta scène dans un cube et appliquer tes textures sur chaque face à l'intérieur. Cela dit je ne saisis pas trop l'intérêt d'un fond d'écran dans un espace 3D.


 
J'aimerai mettres mes spheres (qui répresentes des billes) sur une image BMP répresentant un bitume ;)
 
Sauf que j'arrive pas  charger une 2eme texture,voici le bout de code pour ceux qui cela intéresserait
 

Code :
  1. unsigned texture[2];
  2. unsigned fond[1];
  3. void LoadTexture()
  4. {
  5. AUX_RGBImageRec *texture1;
  6. texture1 = auxDIBImageLoad("machin.bmp" );
  7. glGenTextures (2, &texture[0]);
  8. glBindTexture (GL_TEXTURE_2D, texture[0]);
  9. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  10. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  11. glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
  12.     GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  13. glBindTexture(GL_TEXTURE_2D, texture[1]);
  14. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  15. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  16. glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
  17.     GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  18.  
  19.      AUX_RGBImageRec *fond;
  20.     fond = auxDIBImageLoad("bitume.bmp" );
  21. glGenTextures (0, &fond[0]);
  22. };


 
L'erreur affiché m'est incompréhensible :
 
"cannot convert AUX_RGBImageRec to 'glUint' for arguement '2 to voidglGenTexture(Glsizei,GLuint)"
 
 :sweat:  
 
Pourtant j'utilise la même méthode sauf que je changer d'image ( a la place de texture1 c'est fond),je ne comprend pas le problème...
 
Je peux également fournir mon code entierement mais je doute que quelqu'un ait du temps à perdre

n°2030
Profil : Internaute
Posté le 25-03-2007 à 19:50:29   answer
 

Apparamment tu utilises glaux que je ne connais pas.
 
C'est bien à l'initialisation que tu places ce code ? Je te conseilles d'utiliser une liste d'affichage pour gérer tes textures avec glGenLists.

n°2031
Profil : Internaute
Posté le 25-03-2007 à 20:57:37   answer
 

Heristop=> Exacte en faite j'appelle la procédure LoadTexture dans la partie CALLBACK
 

Code :
  1. LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  2. {
  3. switch (uMsg)
  4. {
  5. case WM_CREATE:
  6.  DC=GetDC (hwnd);
  7.         InitPixelFormat (DC);
  8.         RC = wglCreateContext (DC);
  9.         wglMakeCurrent (DC, RC);
  10.         glEnable (GL_DEPTH_TEST);
  11.  glEnable(GL_TEXTURE_2D);
  12.  //glEnable(GL_DEPTH_TEST);
  13.         //glEnable(GL_LIGHTING);
  14.         //glEnable(GL_LIGHT0);  
  15.         glClearColor (0,0,0,0);
  16.         ICI =>>>LoadTexture();
  17.  break;
  18. case WM_CLOSE:
  19.         wglMakeCurrent (NULL, NULL);
  20.         wglDeleteContext (RC);
  21.         ReleaseDC (hwnd,DC);
  22.  PostQuitMessage (0);
  23.  break;
  24.     case WM_SIZE:
  25.      glViewport (0,0,LOWORD (lParam),HIWORD (lParam));
  26.      glMatrixMode (GL_PROJECTION);
  27.      glLoadIdentity ();
  28.      gluPerspective (45,float(LOWORD(lParam))/float(HIWORD(lParam)),1,100);
  29.      break;
  30.     case WM_PAINT:
  31.      RePaint ();
  32.      break;
  33. case WM_KEYDOWN:
  34.  switch (wParam) {
  35.  case VK_DOWN:
  36.   z--;
  37.   break;
  38.  case VK_UP:
  39.   z++;
  40.   break;
  41.  case VK_RIGHT:
  42.   x--;
  43.   break;
  44.  case VK_LEFT:
  45.   x++;
  46.   break;
  47.  case 'F':
  48.   filt=!filt;
  49.   break;
  50.  case 'T':
  51.   text=!text;
  52.   break;
  53.  case 'Z':
  54.   zbuffer=!zbuffer;
  55.   break;
  56.  case 'O':
  57.              mvty1+=0.3;
  58.              break;
  59.         case 'L':
  60.              mvty1-=0.3;
  61.              break;
  62.         case 'K' :
  63.              mvtx1+=0.3;
  64.              break;
  65.         case 'M' :
  66.              mvtx1-=0.3;
  67.              break;
  68.  }
  69.  break;
  70. default:
  71.  return DefWindowProc (hwnd,uMsg,wParam,lParam);
  72.  break;
  73. }
  74. return 0;
  75. }


 

Citation :

C'est bien à l'initialisation que tu places ce code ? Je te conseilles d'utiliser une liste d'affichage pour gérer tes textures avec glGenLists.


 
glGenLists?Je ne connais pas :sweat:, je devrai faire des recherches la dessus
 
J'ai vu pas mal de tuto différents sur le chargement de texture,je vais peut etre changer la mienne alors

n°2032
Profil : Internaute
Posté le 25-03-2007 à 21:28:50   answer
 

zell789 a écrit :

Heristop=> Exacte en faite j'appelle la procédure LoadTexture dans la partie CALLBACK


Hmm... Je ne sais pas si c'est très propre de faire çà. Bon d'abord je te remercie de me faire rafraîchir la mémoire sur l'OpenGL. Cela fait quelques années que j'en avais pas fait.
 
Ensuite, quelque soit la librairie utilisée, généralement on retrouve ce modèle (je reprends d'après une source en SDL) :
 

Code :
  1. reshape(width, height);
  2.   /* initialisation d'OpenGL */
  3.   Init();
  4. /* boucle evenementiel */
  5. while(1) {
  6.           /* récupération des evenements. */
  7.           callback();
  8.           /* dessin */
  9.           Render();
  10.           /* animation */
  11.           Idle();
  12.    
  13.           /* swap des tampons */
  14.           SwapBuffers();
  15. }


 
Le mieux je pense c'est d'initialiser tes textures dans la fonctions équivalent à Init();
 

Citation :

glGenLists?Je ne connais pas :sweat:, je devrai faire des recherches la dessus
 
J'ai vu pas mal de tuto différents sur le chargement de texture,je vais peut etre changer la mienne alors


Voilà un exemple pout t'aider :
 
Pour la création :
 

Code :
  1. texture = glGenLists(1);
  2.   glNewList(texture, GL_COMPILE);
  3.   ...
  4.   glEndList();

 
 
Pour l'appel :
 

Code :
  1. glPushMatrix();
  2.   glCallList(texture);
  3.   ...
  4.   glPopMatrix();

n°2033
Profil : Modérateur
Posté le 25-03-2007 à 21:38:04   answer
 

Sisi, il y a bien sûr moyen de mettre un fond d'écran 2D derrière une scène 3D et sans passer par des textures. Heureusement d'ailleurs ! Ca permet aussi de mettre des indications à l'écran au premier plan, comme des barre de vie, un hud, etc.
 
Je m'en suis aussi servi en vision : tu mets ce que voit la caméra derrière (une image, donc) et tu places l'objet 3D dont tu as déterminé la position devant. Si ça colle, alors c'est que l'algo de vision fonctionne :mdr:
 
 
Je te conseille la démarche suivante :
* en préparation : charger l'image BMP dans un buffer
* pour le tracé :
- effacer l'écran et le Z-buffer
- désactiver l'éclairage, le Z-buffer, etc. mettre la couleur à blanc (sinon l'image est multipliée par la couleur courante, si ma mémoire est bonne, ce qui permet des effets d'ailleurs)
- placer les matrices de projection afin de dessiner le fond (mode 2D)
- se mettre dans un coin de l'écran avec glRasterpos2i(x,y)... en principe en haut à gauche ou en bas à gauche*
- indiquer dans quel sens on trace* avec glPixelZoom(1,1) ou glPixelzoom(1,-1)
- dessiner l'image avec glDrawpixels(largeur, hauteur, format=GL_BGR ou GL_RGB, type=GL_UNSIGNED_INT, pointeur vers le début de l'image)
- réinitialiser les deux matrices de projection, et les placer dans ton point de vue 3D à coup de glOrtho, glLookat, ou je ne sais quoi
- réactiver l'éclairage, le Z-buffer, tout ce que tu as besoin
- dessiner ton objet 3D normalement
 
J'ai du code tout prêt pour ça si tu veux, mais je ne peux pas te le sortir en dix minutes... Je vais regarder.
 
* Pourquoi en haut ou en bas, et pourquoi le zoom -1 ? Ben pour une raison très conne : les BMP, contrairement à la plupart des formats, sont dessinés de bas en haut. Donc selon le fichier utilisé, soit tu te mets en bas à gauche et tu montes, soit tu te mets en haut à gauche et tu descends. C'est probablement le truc qui merdoira le plus, ce que je te suggères vivement, c'est de te mettre au milieu, de lancer le tracé, et de voir comment il faut mettre le zoom et le point de départ à partir du résultat.

Heristop a écrit :

C'est bien à l'initialisation que tu places ce code ? Je te conseilles d'utiliser une liste d'affichage pour gérer tes textures avec glGenLists.


D'après ce que m'a raconté un spécialiste de ce genre de choses, et si j'ai bien compris, les display lists ne sont plus trop la façon de faire à la vogue. Cela dit, ça reste bien pratique quand même, et je ne me souviens plus de ce qu'il faudrait mettre à la place...

n°2034
Profil : Internaute
Posté le 25-03-2007 à 21:40:34   answer
 

Apres des recherches sur des sites et forum GLaux aurait la réputation de ne pas etre fiable !  
 
En faite si je connais glGenLists c'était une leçon de ce site http://glinfrench.apinc.org/index.php3, à noter que mon programme ressemble un peu au tuto de ce site et que c'est ici ou j'ai appris pour le "texturing",je me base beaucoup sur ce site pour mon programme ce qui explique aussi le peu de maitrise également
 
Heristop=> L'initialisation de mon programme se fait sur le call WM_Create je n'ai pas de Ini_GL
 
Je sens que je vais devoir tout restructurer,si tu veux je peux mettre mon code ici
 
Dans tout les cas je te remercie de ton aide précieuse ;)

n°2035
Profil : Internaute
Posté le 25-03-2007 à 21:51:12   answer
 

Koren a écrit :

Sisi, il y a bien sûr moyen de mettre un fond d'écran 2D derrière une scène 3D et sans passer par des textures. Heureusement d'ailleurs ! Ca permet aussi de mettre des indications à l'écran au premier plan, comme des barre de vie, un hud, etc.
 
Je m'en suis aussi servi en vision : tu mets ce que voit la caméra derrière (une image, donc) et tu places l'objet 3D dont tu as déterminé la position devant. Si ça colle, alors c'est que l'algo de vision fonctionne :mdr:


Apparemment ce n'est pas vraiment un fond d'écran qu'il veut, mais un sol, d'après ce que j'ai compris.
 

Citation :

D'après ce que m'a raconté un spécialiste de ce genre de choses, et si j'ai bien compris, les display lists ne sont plus trop la façon de faire à la vogue. Cela dit, ça reste bien pratique quand même, et je ne me souviens plus de ce qu'il faudrait mettre à la place...


Ah peut-être. Il y trois, quatre ans çà l'était encore.  ;)  

n°2036
Profil : Modérateur
Posté le 25-03-2007 à 21:51:13   answer
 

Ah ben en fait, je n'ai pas eu à chercher beaucoup... Bon, il y a des tas de variantes, mais ça pourra sans doute te servir de point de départ... A noter que si l'image n'a pas la taille du fond, on peut facilement la redimensionner automatiquement en jouant sur les projections.
 
PS : je n'ai pas contrôlé le code, ça vient d'un programme pris au hasard, donc je crois que ça marche, mais ce n'est pas rigoureusement garanti... C'est juste le bout pour tracer l'image de fond. A noter que le premier bloc sauvegarde la projection courante, et le dernier la restaure...
 

Code :
  1. glMatrixMode(GL_PROJECTION);
  2. glPushMatrix();
  3. glMatrixMode(GL_MODELVIEW);
  4. glPushMatrix();
  5. glDisable(GL_DEPTH_TEST);
  6. glMatrixMode(GL_PROJECTION);
  7. glLoadIdentity();
  8. glOrtho2D(0.0, size_x, 0.0, size_y);
  9. glMatrixMode(GL_MODELVIEW);
  10. glLoadIdentity();
  11. glRasterPos2i(0, size_y);
  12. glDrawPixels(size_x, size_y, GL_RGB, GL_UNSIGNED_BYTE, image_buffer);  // 0x1909=GL_LUM pour une image monochrome
  13. glEnable(GL_DEPTH_TEST);
  14. glMatrixMode(GL_PROJECTION);
  15. glPopMatrix();
  16. glMatrixMode(GL_MODELVIEW);
  17. glPopMatrix();

n°2037
Profil : Modérateur
Posté le 25-03-2007 à 21:59:00   answer
 

Heristop a écrit :

Apparemment ce n'est pas vraiment un fond d'écran qu'il veut, mais un sol, d'après ce que j'ai compris.


Ah, j'avais peut-être mal compris ce qu'il voulait, alors, à partir de son premier message ?
 

Heristop a écrit :

Ah peut-être. Il y trois, quatre ans çà l'était encore.  ;)


Ca date bien de trois-quatre ans, justement. Le hic, c'est que je ne sais plus pourquoi. Je me souviens que je n'arrivais pas à faire fonctionner un truc, et en allant le voir (un vrai spécialiste, même Microsoft a essayé de lui mettre la main dessus... C'est toujours bien pratique ;) ), il m'avait dit qu'on n'utilisait plus vraiment ce genre de choses dans la mesure où ce n'était plus accéléré correctement. Ca avait un sens à une époque où des séquences de commandes pouvaient être optimisées si connues à l'avance, mais pour je ne sais plus quelle obscure raison on procédait différemment à présent.
 
Cela dit, comme c'est pratique, ça m'arrive encore de les utiliser...

n°2038
Profil : Internaute
Posté le 25-03-2007 à 22:10:40   answer
 

Koren a écrit :


- désactiver l'éclairage, le Z-buffer, etc. mettre la couleur à blanc (sinon l'image est multipliée par la couleur courante, si ma mémoire est bonne, ce qui permet des effets d'ailleurs)
[...]
- réactiver l'éclairage, le Z-buffer, tout ce que tu as besoin
- dessiner ton objet 3D normalement


C'est pas un peu moche tout ca (desactiver le Z-buffer -> dessiner le fond -> le reactiver -> dessiner les objets) :??:
Enfin je dis ca... j'ai un pote qui desactivait le Z-buffer pour faire des effets de particules sans avoir a recalculer l'ordre d'affichage des textures. Bizarement ca marchait, mais on s'est toujours demande pourquoi :D


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2039
Profil : Modérateur
Posté le 25-03-2007 à 22:12:53   answer
 

zell789 a écrit :

"cannot convert AUX_RGBImageRec to 'glUint' for arguement '2 to voidglGenTexture(Glsizei,GLuint)"
 
Pourtant j'utilise la même méthode sauf que je changer d'image ( a la place de texture1 c'est fond),je ne comprend pas le problème...
 
Je peux également fournir mon code entierement mais je doute que quelqu'un ait du temps à perdre


Du temps à perdre, non, mais un coup de main, ce n'est pas un problème.
 
Je crois que tu as mal compris ce que faisait glGenTexture... ça crée une structure de donnée en mémoire pour ranger une texture, et ça te fournit des identifiants (des entiers non signés) pour y accéder.
 
Le deuxième paramètre de glGenTexture doit être un pointeur vers un ou plusieurs entiers (Gluint) et non vers les données de l'image (AUX_RGBImageRec). C'est ce que te dit le message d'erreur.
 
Compare :
 

Code :
  1. AUX_RGBImageRec *fond;
  2. glGenTextures (0, &fond[0]);


 
avec ce qu'il y a au-dessus :
 

Code :
  1. unsigned texture[2];
  2. glGenTextures (2, &texture[0]);


 
Une fois que tu as créé de la place pour les textures, il est temps de les charger :
 

Code :
  1. texture1 = auxDIBImageLoad("machin.bmp" );
  2. glBindTexture (GL_TEXTURE_2D, texture[0]);
  3. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  4. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  5. glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);


- tu charges l'image dans la structure AUX_RGBmachintruc dans texture1
- tu sélectionnes la texture 0 (en utilisant l'identifiant que OpenGL a rangé dans le tableau texture après l'appel à glGenTexture)
- tu précises les paramètres d'interpolation si elle est trop petite ou trop grande (NEAREST, c'est moche mais rapide)
- et enfin, tu charges l'image dans la texture avec glTexImage2D (la texture étant rangée dans la structure texture1, dans ->data)
 
A partir de là, si ma mémoire est bonne, tu peux d'ailleurs désallouer texture1.
 
Plus clair ?

n°2040
Profil : Internaute
Posté le 25-03-2007 à 22:15:23   answer
 

Koren & Heristop => Oui je désirerai un sol mais un fond d'écran ce serait pas mal aussi même si j'aimerai un sol pour mes billes
 
Je vais arreter OpenGL pour ce soir,j'ai un DST sur le traitement d'image (Fournier,Sobel..) à préparer demain,j'y reviendrai si mes révisions avancent vite

n°2041
Profil : Modérateur
Posté le 25-03-2007 à 22:20:34   answer
 

Skyfighter a écrit :

C'est pas un peu moche tout ca (desactiver le Z-buffer -> dessiner le fond -> le reactiver -> dessiner les objets) :??:


Non, c'est standard et courant. On fait des trucs bien plus rigolos, d'ailleurs ;)
 
Par exemple, si tu veux dessiner uniquement les contours d'un objet :
- tu desactives l'écriture des données (!)
- tu dessines l'objet (rien n'est affiché, mais le Z-buffer est modifié et du coup l'espace est "occupé" par un objet invisible
- tu réactives l'écriture des données
- tu passes en mode fil de fer
- tu augmente la taille des traits
- tu lui dit de ne dessiner que les triangles qui pointent... vers l'arrière (re-!) (front-culling)
- tu redessine l'objet une seconde fois
...
et magiquement, tu vois uniquement les contours de l'objet. C'est ce qui est utilisé pour le rendu qu'on qualifie (à tord) de cell shading (à ceci près qu'on ne dessine pas un objet invisible, on le dessine en bricolant l'éclairage, en mixant une texture 2D avec la texture de l'objet, enfin c'est nettement moins évident en deux mots)
 
L'openGL, c'est simplement un automate complexe, et il est possible de faire beaucoup de choses intéressantes quand on sait se servir du Z-buffer, du stencil buffer, et des différentes conditions. Par exemple, une vue en coupe automatique...
 

Citation :

Enfin je dis ca... j'ai un pote qui desactivait le Z-buffer pour faire des effets de particules sans avoir a recalculer l'ordre d'affichage des textures. Bizarement ca marchait, mais on s'est toujours demande pourquoi :D


Ben s'il désactive le Z-buffer, elles sont toutes affichées dans l'ordre où le programme les fournit. Ca dépend de ce qu'il voulait faire, mais à part le fait qu'on voit parfois les particules de derrière devant d'autres particules plus proche, ça marche. Et si les particules utilisent de l'alpha, ça ne peut que marcher... (enfin bon, ça dépend de ce que tu veux faire)

n°2042
Profil : Modérateur
Posté le 25-03-2007 à 22:44:18   answer
 

zell789 a écrit :

Koren & Heristop => Oui je désirerai un sol mais un fond d'écran ce serait pas mal aussi même si j'aimerai un sol pour mes billes


Si tu veux un fond d'écran, tu as mon code plus haut. Si tu veux un quad texturé, pas à pas :
 
* à l'initialisation :
 
- tu définis un entier qui contiendra ton numéro de texture

Code :
  1. GLuint texture_ID


 
- tu demandes à la carte vidéo d'attribuer un numéro pour ta texture :

Code :
  1. glGenTextures (1, &textureID);


(se lit comme la demande à la carte vidéo "fais-moi de la place pour 1 texture, et stocke-moi son numéro dans la variable textureID" )
 
- tu charges la texture en mémoire (avec GLaux, par exemple, mais tu peux aussi écrire ton propre logiciel de lecture, ou en utiliser un existant... le tout est d'avoir un buffer qui contient l'image)

Code :
  1. AUX_RGBImageRec* image;
  2. image = auxDIBImageLoad("bitume.bmp" );


l'image est chargée, et tu peux accéder au buffer avec image->data
 
- tu dis à la carte vidéo que tu vas faire des choses avec la texture que tu lui a demandé plus tôt :

Code :
  1. glBindTexture (GL_TEXTURE_2D, textureID);


A noter qu'on lui fournit le type de texture (image 2D) parce qu'il va réserver de la place dans la mémoire vidéo, et donc il lui faut savoir combien de place il va falloir... A présent, toutes les commandes liées aux textures utiliseront la texture qui nous intéresse
 
- tu lui précises comment elle doit la modifier si elle est trop petite/grande :

Code :
  1. glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  2. glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);


LINEAR, ce sera moins moche... au besoin, c'est là qu'on définit des MIPMAPs pour éviter les scintillements quand la texture est très petite. Il y a aussi d'autres paramètres pour la façon dont la texture se comporte quand on sort de la zone (bouclage, inversion, etc.)
 
- puis tu mets l'image dans la mémoire vidéo :

Code :
  1. glTexImage2D(GL_TEXTURE_2D, 0, 3, image->sizeX, image->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, image->data);


0 est là pour le niveau de détail des MIPMAPs, à laisser (de toute façon, les MIPMAPs sont bien générés automatiquement au besoin). 3, c'est le nombre de couleur à utiliser en INTERNE dans la carte (pas forcément celui de l'image). Suit la taille de l'image, le 0 ensuite correspond à la taille de la bordure (ie pas de bordure), on précise que l'image est en RGB, que les données du buffer sont des entiers 8bits non signés, et on fournit le pointeur vers les données de l'image.
 
- Facultatif, je crois qu'on peut libérer la mémoire centrale en virant l'image à présent inutile :

Code :
  1. free(image);


(à vérifier, mais j'en suis sûr, c'est juste pour ne pas dire de bêtises)
 
Et c'est fini pour l'initialisation, la texture est en mémoire !
 
 
* à l'exécution:  
- chaque fois que tu as besoin de la texture, il faut dire que c'est celle-là que tu vas utiliser. Donc donner à la carte vidéo son numéro interne, textureID !

Code :
  1. glBindTexture(GL_TEXTURE_2D, textureID);


 
- puis, dessiner le polygone

Code :
  1. glBegin(GL_QUAD);
  2. glTexCoord2f(0.0,0.0);
  3. glVertex3f(x1, y1, z1);
  4. glTexCoord2f(0.0,1.0);
  5. glVertex3f(x2, y2, z2);
  6. glTexCoord2f(1.0,1.0);
  7. glVertex3f(x3, y3, z3);
  8. glTexCoord2f(1.0,0.0);
  9. glVertex3f(x4, y4, z4);
  10. glEnd();


 
 
Si un point est obscur, dis-le...
 
 

Citation :

Je vais arreter OpenGL pour ce soir,j'ai un DST sur le traitement d'image (Fournier,Sobel..) à préparer demain,j'y reviendrai si mes révisions avancent vite


Rah, Sobel... ça me rappelle de bons souvenirs de Master 2...


Message édité par Koren le 25-03-2007 à 22:47:12
n°2043
Profil : Internaute
Posté le 26-03-2007 à 18:25:18   answer
 

Bon soirée spéciale Open GL j'espere que j'aurai fais un grand pas dans mon projet,surtout apres avoir vu les programmes des autres :sweat:
 
Koren=>Je vais essayer ta méthode pour le fond d'écran merci ;)
 
Faut que je regle aussi ce probleme de texture,je sens que je vais devoir repogrammer cette partie


Message édité par zell789 le 26-03-2007 à 19:03:50
n°2044
Profil : Internaute
Posté le 26-03-2007 à 19:31:04   answer
 

Koren => Ca marche à la compil mais la figure ne s'affiche pas je te met ici mon programme j'ai appellé la texture sol
 
Je n'ai pas créer un quad 3D,mais je ne pense pas que ce soit le probleme!
 
 
Procédure pour charger la texture

Code :
  1. void LoadTexture()
  2. {
  3. AUX_RGBImageRec *texture1;
  4. texture1 = auxDIBImageLoad("machin.bmp" );
  5. glGenTextures (2, &texture[0]);
  6. glBindTexture (GL_TEXTURE_2D, texture[0]);
  7. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  8. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  9. glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
  10.     GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  11. glBindTexture(GL_TEXTURE_2D, texture[1]);
  12. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  13. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  14. glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
  15.     GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  16.  
  17.     glGenTextures (1, &sol);
  18.     AUX_RGBImageRec* image;
  19.     image = auxDIBImageLoad("bitume.bmp" );
  20.     glBindTexture (GL_TEXTURE_2D, sol);
  21.     glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  22. glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  23. glTexImage2D(GL_TEXTURE_2D, 0, 3, image->sizeX, image->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, image->data);
  24. };


 
Voici la méthode Repaint où je dessine les figure
 

Code :
  1. void RePaint()
  2. {   
  3.    
  4.      glMaterialiv(GL_FRONT_AND_BACK,GL_SPECULAR,MatSpec); 
  5.      glMateriali(GL_FRONT_AND_BACK,GL_SHININESS,100);
  6. glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  7. glMatrixMode (GL_MODELVIEW);
  8. glLoadIdentity ();
  9. gluLookAt(camx,camy,camz,centrex,centrey,centrez,hautx,hauty,hautz);
  10. glBindTexture(GL_TEXTURE_2D,sol);
  11. glBegin(GL_QUADS);
  12. glTexCoord2i(1,0);glVertex2i(-1,-1);
  13. glTexCoord2i(1,1);glVertex2i(-1,1);
  14. glTexCoord2i(0,1);glVertex2i(1,1);
  15. glTexCoord2i(0,0);glVertex2i(1,-1);
  16. glEnd();
  17. /*glRotated(b,1,1,0);  
  18.     glLightiv(GL_LIGHT0,GL_POSITION,LightPos);  
  19.     glRotated(-b,1,1,0);  
  20.     b+=0.1;*/
  21.     if (zbuffer) glEnable(GL_DEPTH_TEST);
  22.  else glDisable(GL_DEPTH_TEST);
  23.     if (text) glEnable(GL_TEXTURE_2D);
  24.  else glDisable(GL_TEXTURE_2D);
  25. glBindTexture(GL_TEXTURE_2D, texture[filt]);
  26. gluQuadricTexture(Sphere1, true);
  27. gluQuadricDrawStyle(Sphere1, GLU_FILL);
  28. gluQuadricTexture(Sphere2, true);
  29. gluQuadricDrawStyle(Sphere2, GLU_FILL);
  30. gluQuadricTexture(Sphere3, true);
  31. gluQuadricDrawStyle(Sphere3, GLU_FILL);
  32.     glTranslated(mvtx1,mvty1,0);
  33.     glColor3d(1.0f,0.0f,0.0f);
  34. gluSphere(Sphere1,2, 50, 50);
  35. glTranslated(-mvtx1,-mvty1,0);
  36. glDisable(GL_TEXTURE_2D);
  37. glColor3d(0.0f,0.0f,1.0f);
  38. glTranslated(2,-5,0);
  39. glRotated(a,0,1,0);
  40. gluSphere(Sphere2,2, 50, 50);
  41. glEnable(GL_TEXTURE_2D);
  42. glColor3d(0.0f,1.0f,0.0f);
  43. glTranslated(-4,10,0);
  44. /*if (a <= -4) mvtTran = 0;  
  45.     if (a >= 4) mvtTran = 1;  
  46.     if (!mvtTran) a += 0.01;  
  47.     if (mvtTran) a -= 0.01;  
  48.     glTranslated (a,0,0);*/
  49. gluSphere(Sphere3,2, 50, 50);
  50. SwapBuffers (DC);
  51. }


 
EDIT : Ca fait 2 heures que je programme,et j'avance toujours pas,mes capacitées intellectuelle m'inquiete vraiment,je ne comprend rien à l'échelle X,Y,Z, même pas à dessiner des cubes 3D sans faire des copier/coller,je n'arrive trjs pas à plaquer cette texture,ou gérer manuellement la lumière (et pourquoi les couleurs disparaissent quand la lumiere est activée?)
 
C'était ma minute "je vide mon sac',j'y retourne..........

Message cité 1 fois
Message édité par zell789 le 26-03-2007 à 22:29:47
n°2045
Profil : Modérateur
Posté le 26-03-2007 à 22:46:43   answer
 

zell789 a écrit :

EDIT : Ca fait 2 heures que je programme,et j'avance toujours pas,mes capacitées intellectuelle m'inquiete vraiment


Il ne faut pas, si ça peut te rassurer, en général je merde pas mal moi-même :)
 
Il faut prendre les choses très calmement et une à une. La première chose, c'est d'avoir un truc à l'écran, quel qu'il soit. Trop souvent, l'écran est noir parce qu'il y a une caméra à l'envers ou quelque chose de ce genre. Une fois que tu as repéré la scène, on peut chercher à comprendre ce qui cloche.
 
Tu as mis quoi dans camx-camz, centerx-centerz et hautx-hautz ?
 
Si tu ne vois rien, le mieux c'est de procéder ainsi : faire une fonction Repaint à part et qu'on remplit au fur et à mesure (en rajoutant la couleur, la texture, mais une chose à la fois). Il faut :
- placer la caméra
- afficher n'importe quoi et le voir
 

Code :
  1. void RePaint()
  2.      glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  3.      glMatrixMode (GL_MODELVIEW);
  4.      glLoadIdentity ();
  5.      glMatrixMode (GL_PROJECTION);
  6.      glLoadIdentity ();
  7.      gluLookAt(0.0, 0.0, -10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  8.      glDisable(GL_LIGHTING);
  9.      glColor3f(0.0, 0.0, 0.0);
  10.    
  11.      glBegin(GL_TRIANGLES);
  12.      glVertex3f(0.0, 0.0, 0.0);
  13.      glVertex3f(0.0, 0.0, 1.0);
  14.      glVertex3f(1.0, 1.0, 0.0);
  15.      glEnd();
  16. }


 
 
 

Citation :

pourquoi les couleurs disparaissent quand la lumiere est activée?


Quand la lumière est activée, tu ne devrais utiliser que du blanc comme couleur, les objets utilisent la couleur définie dans les glMaterial (qui définissent comment un objet renvoie la lumière, donc de quelle couleur il apparait). Ca n'a pas de sens de définir une couleur, puisque si la lumière est rouge, un objet bleu doit apparaître violet.
 
Je te recommande VIVEMENT de ne PAS utiliser la lumière avant que tout ne fonctionne. Et d'au moins toujours laisser un objet (si possible une boite autour de la scène) qui est tracé avec le GL_LIGHTING désactivé, tant que le programme n'est pas fini.

n°2046
Profil : Internaute
Posté le 26-03-2007 à 23:10:03   answer
 

Citation :

Il ne faut pas, si ça peut te rassurer, en général je merde pas mal moi-même :)


 
Je comptais avancé énormément ce soir car mercredi j'ai un concour d'entrée à préparer (l'Ecole Superieur de Genie Informatique),de plus j'ai un controle très délicat en mathématique jeudi,et c'est mon anniversaire mercredi je vais surement devoir allé au restaurant avec la famille,je n'aime pas dire que c'est une perte de temps,mais j'aimerai aussi avancer..et vu que je suis plutôt isolé dans mon groupe,je suis souvent en train de bosser seul,contrairement à d'autre qui bossent ensemble et s'entraident.Je n'aime pas jouer ma pleurnicheuse mais je vais pas me cacher non plus,et me dire que ça roule.
 
 
 
Ok c'est pas en pensant comme ça que je vais me sentir mieux,alors comme tu me l'as dis Koren,je vais reprendre calmement et reprendre mon programme
 

Citation :


Tu as mis quoi dans camx-camz, centerx-centerz et hautx-hautz ?


 
cam x =0
cam z = -5
haut x = 0
haut y = 1
 
cela me permet de les voirs directements,
 
 
Je vais tenter d'appliquer tes conseils...
 
EDIT : En faite ma texture était appliqué mais les spheres écrasaient,la texture.Enfin je pense pas que ce soit ça en faite ....


Message édité par zell789 le 27-03-2007 à 12:12:23
n°2047
Profil : Rédacteur PF
Posté le 27-03-2007 à 14:19:04   answer
 

Vous m'avez donné l'envie de m'y remettre :sweat:  
 
Autrement, je souhaiterai pouvoir concevoir des modèles complexes par un log de 3D. Lequel s'en sort bien pour une exportation vers OpenGl ?


---------------
Toute l'actualité PS3, PSP et PS2 sur Playfrance.com
 
PSN : Halouf
Wii : 8216 1846 7242 3813
 Page :  1  2  3
Page Précédente 

Aller à :
     Ajouter une réponse
 




playfrance © 2000-2008, Splitgames Network - Tous droits réservés | Nous contacter
PlayStation 2 (PS2), PSP et PlayStation 3 (PS3) sont des marques déposées par Sony Computer.

Conception SplitGames 2008 - Design graphique SplitGames et Cubedesigners 2008