Télécharger le zip
Bon bah j'éspère que vous allez aimer, je débute en OpenGL alors soyez pas trop durs.
Euh, dsl, j'arrive pas a compiler...et les DLL ne m'aime pas ...(ou en tt cas, elle n'aime pas Dev-C++) :((, tu linkes cmt ton truc ? J'ai hate de voir ce que c'est! Surtout que je n'y connais rien en Open GL mais j'adore voir les autres faire des merveilles :-))Allez, a++Gendal67, à votre service !
Gendal> pour faire mercher son prog : tu créé un nouveau projet avec devcpp tu supprime la sourcemise par defaut, puis tu rajoutes la source de quicky24Pour linker tu mets(a la barbare) ;) :libglaux.alibglu32.alibglut32.alibglut.aavec ca t'es sur de pas avoir de linker error!!!et la dll dans le zip faut la renomer glut.dll a la place de glut32.dll ^^voilaQuicky24> ta demo c'es seulement un cube qui tourne autour d'une sphere? je pensais qu'il y aurait du brouillard vu ce qu'il a dans ta source...En tt cas ta source est une bonne idée ! C'est bien un truc pas compliqué et court pour debuter en openGL
sous Dev-C++ on a coutume de remplacer 'lib' par l et de ne pas mettre l'extension, puis de mettre un - devant chaque lib, comme ça:-lglaux-lglu32-lglut32-lglutet puis faut pas oublier:-lopengl32
oui mais dasn le dossier lib de devcpp ils sont pas ecrit comme caEt puis -lopengl32 est mis par defaut en creant un nouveau projet openGL sous devcpp
-l... n'est pas specifique a devcpp, c'est pour dire au linker gcc (ld) d'ajouter lle binaire correspondant
pourquoi tu rajoutes glut?????????dletozeun -> "un truc pas compliqué et court " : c'est la cas de le dire...Par contre, la source est suffisamment courte pour voir qu'il a bel et bien du brouillard... touche 'b'. d'ailleurs, une fois qu'il est mis on ne peut plus l'enlever :(mais je suis d'accord avec toi, cette source peut etre utile aux débutants, mais dans ce cas faut bourrer de commentaires.ya une question dans le forum sur les quadrique (hein funto :) )ca pourrait aider
woups dsl ya gourrancec c'est pas des quadrique...glutSolidCube...ca aurait pu...
slt à tous,pour bien linker ma source il faut mettre:-lopengl32 -lglu32 "chemin de la lib jusqu'à libglu32.a" -lglut32 "pareil pour libglut32.a" et pis voilà ou alors je vous mets le Dev projet.Merci de vos commentaires mais pour le brouillard j'ai mis glDisable ce qui désactive le brouillard :-)quicky24
problème : il y a des erreurs dans ta demo.Sinon je te demande avec quel compilateur tu as compilé ce prog.
Sinon pour enlever le brouillard suffit de rajouter:case 'n': glDisable(GL_FOG); break;dans le switch(key)
ou encore, dans le case 'b'if (glIsEnabled(GL_FOG)){...}else{...}le c++ est plein de ressources ! (ben c'est pour ca qu'on l'utilise, non? :) )
sltdizzy> j'ai DevC++ 4.9.7.0 comme IDE.Arnaud16022> je ne connais pas tout l'OpenGL non plus.Qui sait afficher les FPS et mettre à la meme vitesseà tous les ordis?quicky24
rien de plus simple.(j'exagere ;) )tu calcules la différence de temps qu'il y a entre 2 frames (chaque frame, pas une seule fois!), et tu passes ca comme argument a chaque fonction.pour le FPS, ben ya qu'a compter combien t'as affiché en 1 sec (!)pour afficher, le plus simple c'est dee le mettre dasn la bare de titre, mais gare a la chute du fps!sion, direction nehe ou digiben.
Arnaud tu peux m'indiquer un code source pour le fps ou alors un site oû il y a un code sans win32.
salut, j'aimerais bien tester ton app... mais g pas la possibilité de compiler le code source... pourrais-tu mettre l'exe avec le zip stp?
bah le code est court, tu peux pas t'imaginer ca que ca fait?mais perso je trouve aussi qu'on devrait tjs mettre des sources compilables...
slt je viens de mettre à jour@++
UN TIMER!!!!c'est bien comme ca mais j'ai du ouvrir 4 fois le programme (en meme temps) pour avois un fps correctmais sinon cette source est super pour les débutants. a quand les vertex normals? :)
c'est pour ça Arnaud que j'ai besoin de ce code eh oui!
hum en lisant le code je vois qd meme plein de problemes:void Texture(...): tu n'utilises pas de textures!e+=2 : tu utilises le timer de glut, mais tu ne passes pas la valeur de ce timer a tes fonctions, cee qui fait que le timer ne sert a rienglNewList(2,GL_COMPILE_AND_EXECUTE): tu crées une liste a chaque frame sans jamais les supprimer. une seule fois suffit (sinon ca servirait a rien!)glutSwapBuffers(); glutPostRedisplay(): etonnant...pour moi on utilise soit l'un soit l'autre pas les deux... void Touches(): a quoi ca sert d'avoir 2 fonctions pour le clavier? la premiere fait tout et celle-la rien...void Temps(int valeur){ valeur = 60;}: je ne me souviens plus comment marche le timer de glut mais a mon avis, ca ca sert a rien...return 0: étonnant que le compilo ne gueule pas, le type de main() est void et tu retournes un intet puis t'as une série de defines en commentaires qu'il sertai bon de virer dans la version que tu postes...hop,hop, une maj...
"return 0: étonnant que le compilo ne gueule pas, le type de main() est void et tu retournes un int"hum hum. si le compilo devait gueuler, ce serait plutôt sur le fait que main soit déclaré void!! main en C++ est TJS de type int, sinon t'es pas ANSI (ou ISO, je m'y perds ds ces standards...)
euh moi c'est bizzar...quand j'execute le .exe tous fonctionnent mais quand je me le compile : lors de l'execution il fait "OPENGL.dll introuvable" le boulet ! j'ai opengl32.dll !! ca suffit pas ?
kirua: pour dev c++ je sé plus j'ai plus l'habitude, mais VC++, lorsque tu déclares une fonction sans type de retour, te met un warning mais compie qd meme sans erreurs en te disant qu'il a compris que le type était void. maintenant, pour dev...Sinon, tu es d'accord avec moi sur tout ce que j'ai dit?ScreamX: c'et pas un .exe, c'est un .scr (meme si ca change rien dans le fond)c'est zarbi ton truc...le prog fourni dans la source marche?
Arnaud>>ben il compile...en rajoutant include de gl/gl.h...je link avec gult.lib et gult32.lib et opengl32.libmais ca y est : y a une fonction "gluPerspective(pcv,rapport,devant,derriere);" mais ca c'est pas du glut ?? ni de l'openGL ?? et moi je crois que je n'ai pas de glu.lib ...AAAAAAH j'ai trouvé des lib libglu32.a et libglaux.a et avec ça s'a link c'est quoi c'est lib ??
glu ce sont les GL Utilities, ça te permet de faire des gluOrtho, gluLookAt etc... (pas sur pr ortho). c'est très usité.glaux est une VIEILLE librairie de gestion de textures notamment. je la déteste perso... Nehe s'en sert.
qd tu crées une dll comme les concepteurs d'openGL on bien du le faire ;) , le compilateur crée un fichier .dll (!!!) et un fichier .lib ou .a qui est plus ou moins un header précompilé; en gros t'en a besoin sinon le .h de la dll fera référence a des fonction qui de seront implémentées nulle part
c'est pour ainsi dire une description du contenu de la DLL qui permet au compilateur de TON programme de savoir quelles fonctions sont définies (et comment) dans la DLL. cela permet au compilo de comprendre qu'il ne dois pas chercher gluLookAt(...) dans ton code à toi: c'est dans la DLL, et ce sera appelé dynamiquement au Run Time.
Voilà voilou MAJ de cette démoquicky24
L' EXE EN RELEASE!quelle est l'utilité de ca:void Touches(int key,int x,int y){switch(key){ case GLUT_KEY_DOWN: break; case GLUT_KEY_UP: break;}}??????????????????????????rien hein?toujours pas de timerTemps() ne sert a rien...mais sinon c'est bien mieux!!!!
les touches servaient à faire tourner quelque chose individuellement mais ça ne tournait pas individuellement. Et je voudrais savoir comment faire pour afficher le nombre de Frames Par Seconde et limiter pour que ça tourne à la même vitesse sur toutes les machines.MerciQuichy24
il faut pas limiter. seul le V-sync limite le fps, mais ca c'est une autre histoire.pour afficher le fps, je te déconseille fortement la methode de digiben: l'afficher dans le titre de l'application, ca fait chuter le fps de facon impressionnante...mieux vaut l'afficher a l'écran, voir les liens sur ma source (spheremapped outlined fonts), c'est expliqué.le principe du fps c'est que tu mesures le temps entre chaque frame avec time() (ou mieux, cette fonction est nulle mais pour ca ca suffit) . tu passes ce delta_Temps a toutes tes fonctions, et tu incrémentes tes compteurs avec un multiple de cette valeur.pas tres clair tout ca? un exemple:long tps=0.0f,lasttps=0.0f;main(){while(1){fps();dessine(deltaT);}}fps(){tps=time();deltaT+=tps-lasttps;frames++;lasttps=tps;}dessine(deltaT){counter+=deltaT*3.5;glRotatef(counter,0,1,0);Draw();}et voila pour le principe des fps, pour l'aficher cf les sources de digiben.
slt tt le monde je voudrai le code OpenGL pour le timer pour afficher le nombre de frames.quicky24
bah je te dis, digiben l'a fait, ya qu'a copier-coller...enfin bon.void CalculateFrameRate(){ currentTime = SDL_GetTicks() * 0.001f; FPS++; TPF=currentTime - lastFrameTime ; lastFrameTime=currentTime; if(currentTime - lastTime>= 1.0f ) { lastTime = currentTime; FPStoDisp=FPS; FPS = 0.0; }}
non mais ce que je veux c'est que ça soit 100% OpenGL ou GLUT et non SDL ou Win32.quicky24
utilise l'en-tête <ctime> alors, avec clock()
comment on s'en sert pour les fps?quicky24
si tu as tps_prec le temps mesuré à la frame précédente (avec clock()), les FPS sont de CLK_TCK / (clock() - tps_prec).CLK_TCK vaut habituellement 1000 (ce qui veut dire qu'il y a 1000 ticks par seconde, càd qu'un tick vaut 1 ms)
c'est quoi le code ? parce que je ne sais pas me servir de CLK_TCK.
CLK_TCK c'est juste une constante numérique.#include <ctime>#include <iostream>#include <cstdlib>int main(){ unsigned int tps = clock(); System("pause"); cout << "Temps écoulé: " << ((clock() - tps)/CLK_TCK) << " secondes." << endl; System("pause"); return 0;}je sais plus si c'est System ou system...ça enregistre le temps au démarrage du programme dans tps, demande d'appuyer sur enter, et affiche le temps qui s'est écoulé entre le démarrage du programme et l'appui sur enter.
ouah mais t'es tro relou toi http://www.gametutorials.com/download/Ports/OpenGL/Camera2_SDL.zip, et je t'avais déja filé le lien plus haut.
c'est parce qu'il t'a répondu ça:"non mais ce que je veux c'est que ça soit 100% OpenGL ou GLUT et non SDL ou Win32."alors ben voilà, tu l'as en C++ standard.
et alors? je vois pas ce que ca chance. ya juste a remplacer SDL_getticks() pas clock(), c'est pas mortel
bah, il avait pas compris c'est tout, c'est pas la mort non plus ^^
merci kirua et il est bien ton Particle Engine à moins que ça ne soit pas toi...quicky24
Kirua: mais comment on fait pour mettre en FPS avec GLUT_ELAPSED_TIME et ce que tu m'as mis?quicky24
http://www.lighthouse3d.com/opengl/glut/index.php3?fpsgoogle, premier lien en tappant glut elapsed time, faut pas pousser qd même hein :)
bonsoir je viens de voir la source et je n'arrive pas a compiler je suis sur dev c++ 4.9.9.1, j'ai linker comme c expliquer un peu plus haut mais il me met ce message : Compilateur: Default compilerBuilding Makefile: "C:\Dev-Cpp\project\open_gl\Makefile.win"Exécution de make...make.exe -f "C:\Dev-Cpp\project\open_gl\Makefile.win" allg++.exe -c demo.cpp -o demo.o -I"C:/Dev-Cpp/include/c++/3.3.1" -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32" -I"C:/Dev-Cpp/include/c++/3.3.1/backward" -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"C:/Dev-Cpp/include"
Je ne parle pas le langage de devcpp mais moi il fait toujours des trucs comme ca a la compilation...Il ne semble pas se plaindre dasn l'extrait que nous montre...donc a mon avis il faut que tu sois un plus plus precis
J'ai hésité à le dire mais, en effet, aucun message d'erreur dans ce que tu nous montre, je suis formel.
Bonsoir je suis desole je ne vous avais pas mis le message en entier donc voila ce que le log du compil medonne comme info et je pense que c'est un message d'erreur.Merci pour le temps que vous passez a m'aider!!!Compilateur: Default compilerBuilding Makefile: "C:\Dev-Cpp\project\open_gl\Makefile.win"Exécution de make...make.exe -f "C:\Dev-Cpp\project\open_gl\Makefile.win"allg++.exe -c demo.cpp -o demo.o -I"C:/Dev-Cpp/include/c++/3.3.1" -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32" -I"C:/Dev-Cpp/include/c++/3.3.1/backward" -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"C:/Dev-Cpp/include" In file included from demo.cpp:1:Demo.h:1:21: GL/glut.h: No such file or directoryIn file included from demo.cpp:1:Demo.h:7: error: syntax error before `=' tokenIn file included from demo.cpp:2:Temps.h: In function `void Temps()':Temps.h:10: error: `cout' undeclared (first use this function)Temps.h:10: error: (Each undeclared identifier is reported only once for each function it appears in.)demo.cpp: In function `void Activations()':demo.cpp:6: error: `GL_DEPTH_TEST' undeclared (first use this function)demo.cpp:6: error: `glEnable' undeclared (first use this function)demo.cpp:7: error: `GL_LESS' undeclared (first use this function)demo.cpp:7: error: `glDepthFunc' undeclared (first use this function)demo.cpp:8: error: `GL_FOG' undeclared (first use this function)demo.cpp:9: error: `GL_LIGHTING' undeclared (first use this function)demo.cpp:10: error: `GL_LIGHT0' undeclared (first use this function)demo.cpp:11: error: `GL_COLOR_MATERIAL' undeclared (first use this function)demo.cpp:12: error: `GL_SRC_ALPHA' undeclared (first use this function)demo.cpp:12: error: `GL_ONE' undeclared (first use this function)demo.cpp:12: error: `glBlendFunc' undeclared (first use this function)demo.cpp: At global scope:demo.cpp:15: error: syntax error before `=' tokendemo.cpp: In function `void Initialisation(int, int)':demo.cpp:19: error: `glViewport' undeclared (first use this function)demo.cpp:20: error: `GL_PROJECTION' undeclared (first use this function)demo.cpp:20: error: `glMatrixMode' undeclared (first use this function)demo.cpp:21: error: `glLoadIdentity' undeclared (first use this function)demo.cpp:22: error: `pcv' undeclared (first use this function)demo.cpp:22: error: `rapport' undeclared (first use this function)demo.cpp:22: error: `devant' undeclared (first use this function)demo.cpp:22: error: `derriere' undeclared (first use this function)demo.cpp:22: error: `gluPerspective' undeclared (first use this function)demo.cpp:23: error: `GL_MODELVIEW' undeclared (first use this function)demo.cpp: In function `void Brouillard()':demo.cpp:29: error: `GL_FOG_COLOR' undeclared (first use this function)demo.cpp:29: error: `glFogfv' undeclared (first use this function)demo.cpp:30: error: `GL_FOG_MODE' undeclared (first use this function)demo.cpp:30: error: `GL_EXP2' undeclared (first use this function)demo.cpp:30: error: `glFogi' undeclared (first use this function)demo.cpp:31: error: `GL_FOG_DENSITY' undeclared (first use this function)demo.cpp:31: error: `glFogf' undeclared (first use this function)demo.cpp:32: error: `GL_FOG_START' undeclared (first use this function)demo.cpp:33: error: `GL_FOG_END' undeclared (first use this function)demo.cpp: In function `void Demo()':demo.cpp:38: error: `GL_COLOR_BUFFER_BIT' undeclared (first use this function)demo.cpp:38: error: `GL_DEPTH_BUFFER_BIT' undeclared (first use this function)demo.cpp:38: error: `glClear' undeclared (first use this function)demo.cpp:39: error: `glClearColor' undeclared (first use this function)demo.cpp:40: error: `glMatrixMode' undeclared (first use this function)demo.cpp:44: error: `glPushMatrix' undeclared (first use this function)demo.cpp:45: error: `glTranslated' undeclared (first use this function)demo.cpp:47: error: `glColor3f' undeclared (first use this function)demo.cpp:48: error: `m' undeclared (first use this function)demo.cpp:48: error: `p' undeclared (first use this function)demo.cpp:48: error: `glutSolidSphere' undeclared (first use this function)demo.cpp:49: error: `glPopMatrix' undeclared (first use this function)demo.cpp:54: error: `glRotated' undeclared (first use this function)demo.cpp:82: error: `glutSwapBuffers' undeclared (first use this function)demo.cpp:83: error: `glutPostRedisplay' undeclared (first use this function)demo.cpp: In function `void Clavier(unsigned char, int, int)':demo.cpp:90: error: `glEnable' undeclared (first use this function)demo.cpp:92: error: `glDisable' undeclared (first use this function)demo.cpp:98: error: `GL_BLEND' undeclared (first use this function)demo.cpp: In function `void Touches(int, int, int)':demo.cpp:110: error: `GLUT_KEY_DOWN' undeclared (first use this function)demo.cpp:114: error: `GLUT_KEY_UP' undeclared (first use this function)demo.cpp: In function `int main()':demo.cpp:122: error: `glutInitWindowPosition' undeclared (first use this function)demo.cpp:123: error: `glutInitWindowSize' undeclared (first use this function)demo.cpp:124: error: `GLUT_RGBA' undeclared (first use this function)demo.cpp:124: error: `GLUT_DOUBLE' undeclared (first use this function)demo.cpp:124: error: `GLUT_DEPTH' undeclared (first use this function)demo.cpp:124: error: `glutInitDisplayMode' undeclared (first use this function)demo.cpp:126: error: `glutCreateWindow' undeclared (first use this function)demo.cpp:128: error: `glutReshapeFunc' undeclared (first use this function)demo.cpp:131: error: `glutKeyboardFunc' undeclared (first use this function)demo.cpp:132: error: `glutSpecialFunc' undeclared (first use this function)demo.cpp:133: error: `glutDisplayFunc' undeclared (first use this function)demo.cpp:135: error: `glutMainLoop' undeclared (first use this function)make.exe: *** [demo.o] Error 1Exécution terminée
ouah mais la c'est tout le header de gl qui y passe.... et pour cause:glut.h: no such filesimplement, t'as pas installé de skd de openGL, il est entre autres sur www.belzel.free.fr, faudra mettre les fichiers . h dans le repertoire include/opengl de DevC++, les .lib dans le rep libraries/openglca devrait marcher++Arnaud
non.les en-têtes du SDK (pas skd) dans le répertoire include/GL et les .a dans le répertoire lib, pas lib/GL.oublie pas de lier les libs dans les options du projet.
je pense que je suis a la masse ce soir g essaye commevous me dites mais ya toujours un probleme : Compilateur: Default compilerBuilding Makefile: "C:\Dev-Cpp\project\open_gl\Makefile.win"Exécution de make...make.exe -f "C:\Dev-Cpp\project\open_gl\Makefile.win" allg++.exe -c demo.cpp -o demo.o -I"C:/Dev-Cpp/include/c++/3.3.1" -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32" -I"C:/Dev-Cpp/include/c++/3.3.1/backward" -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include/ddk" -I"C:/Dev-Cpp/include/GL" -I"C:/Dev-Cpp/include/GTK" -I"C:/Dev-Cpp/include/sys" In file included from Demo.h:1, from demo.cpp:1:C:/Dev-Cpp/include/GL/glut.h:50: error: redeclaration of C++ built-in type ` wchar_t'In file included from demo.cpp:2:Temps.h: In function `void Temps()':Temps.h:10: error: `cout' undeclared (first use this function)Temps.h:10: error: (Each undeclared identifier is reported only once for each function it appears in.)make.exe: *** [demo.o] Error 1Exécution terminéemerci encore une fois pour votre aide!
glut.h:50: error: redeclaration ofC++ built-in type ` wchar_t'tu n'as qu'à commenter la ligne de glut.h qui redéfinit wchar_t. ça doit être autour de la ligne 50.Temps.h:10: error: `cout' undeclared (first use thisfunction)soit tu n'as pas inclut <iostream>, soit tu n'as pas mis le using namespace std; mais les using ds les en-têtes sont déconseillés (d'ailleurs comment tu peux avoir du cout dans un .h O_O_O). en tt cas, tu dois remplacer les cout, cin, string, ... par std::... (std::cout par exemple)
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 872 292 membres 14 nouveaux aujourd'hui 16 148 membres club