TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
Le problème de ce sujet a été résolu
| Page : 1 | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |
| Page : 1 | |
-Skypers-
|
# Posté le 13/06/2007 à 16:01:22 |
template <class Skypers>![]() Groupe : Membres |
Salut à tous ! J'en peux plus, ça fait deux heures que je cherche le pourquoi du comment, je n'arrive pas à comprendre la position dans un repère en 3D. Par exemple, je place une gluLookAt(1, 1, 1, 0, 0, 0, 0 ,1 , 0);. Ca veut bien dire que ma caméra est se situe à 1 en abscisse, en ordonée et qu'elle est surellevée par rapport au plan de 1 en hauteur ? Ensuite, je dessine juste un rectangle de manière à obtenir le côté droit (lorsqu'on le regarde), d'un carré.
glVertex3d(0, 0, 0); glVertex3d(0, -1, 0); glVertex3d(1, 0, -1); glVertex3d(1, 1, -1); Or j'obtiens un truc qui n'a rien avoir avec ce que j'attendais ! Je ne comprend vraiment pas c'est vraiment chaud ! ![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
seb2003
|
# Posté le 13/06/2007 à 16:26:39 |
|
Groupe : Membres |
glVertex3d(0, 0, 0);
glVertex3d(0, -1, 0); glVertex3d(1, -1, 0); glVertex3d(1, 0, 0); pour un carré dans le plan z=0, mais comme ta camera est en 1,1,1 tu verra pas un carré.. plutot un trapeze si je me trompe pas.. Apres, moi aussi j'ai encore du mal avec tout ca, donc.. rien n'est sur, j'ai pas testé,
|
-Skypers-
|
# Posté le 13/06/2007 à 16:36:49 |
template <class Skypers>![]() Groupe : Membres |
Merci !
Je viens de faire un petit paquet de test, en fait, lorsque l'on définit la caméra, si l'on veut être en face d'un dessin sans trop se prendre la tête, on peut la déclarer ainsi : Code : C++ gluLookAt(0, 0, 1, 0, 0, 0, 0, 1, 0);
Moi perso ça marche, c'est comme de la 2D 'enfin je pense) mais l'on ne pas pas voir l'axe Z (ici en profondeur). Pour ce faire, il faudrait par exemple déplacer la caméra en (2, 5, 1) pour voir par le gauté gauche de l'objet, c'est bien ça ? ![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
seb2003
|
# Posté le 13/06/2007 à 16:41:18 |
|
Groupe : Membres |
bah ca depend un peu d'ou est ton objet..
fait attention à l'emplacement de l'origine des axes, 0,0,1 ca veut dire que tu est "rentré" dans l'écran, et que tu regarde en arrière, autrement dis, la gauche et la droite change.. (si je dis pas de bétise) j'espere avoir ete clair.. bonne continuation |
-Skypers-
|
# Posté le 13/06/2007 à 17:08:33 |
template <class Skypers>![]() Groupe : Membres |
ben justement, je pense que c'est hors de l'écran, j'ai fais le test est pourtant j'ai bien mon objet dessiné dans le bon sens (j'ai fini c'est vraiment super !)
Édité
le 13/06/2007 à 17:10:36
par -Skypers-
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
magnanime
|
# Posté le 13/06/2007 à 21:35:53 |
![]() Groupe : Membres |
trés joli cube.
|
-Skypers-
|
# Posté le 18/06/2007 à 20:40:37 |
template <class Skypers>![]() Groupe : Membres |
Oui il est sympas mais comment utiliser les textures ? J'ai suivis le tuto mais j'ai une blem.
Voici le "nouveau" code source, ainsi que son erreur : Code : C++ #include <windows.h> #include <SDL/SDL.h> #include <gl/gl.h> #include <gl/glu.h> #include <gl/mapping/sdlglutils.h> void __Paint(); double angleX = 0; double angleY = 0; int main(int argc, char *argv[]) { SDL_Surface *screen = NULL; SDL_Event action; bool again = true; SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetCaption("Manipulation de la camera OPENGL", NULL); screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL); // Matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(70, (double)800 / 600, 1, 1000); glEnable(GL_DEPTH_TEST); // Pause while (again != false) { SDL_WaitEvent(&action); switch (action.type) { case SDL_QUIT : again = false; break; } __Paint(); } SDL_FreeSurface(screen); SDL_Quit(); return 0; } void __Paint() { GLuint texture; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_TEXTURE_2D); texture = loadTexture("stainedglass05.jpg"); gluLookAt(0.5, 0.2, 3, 0, 0, 0, 0, 1, 0); glBegin(GL_LINES); // Repere XYZ glColor3ub(0, 255, 0); glVertex3d(0, 0, 0); glVertex3d(0, 1, 0); glColor3ub(0, 0, 255); glVertex3d(0, 0, 0); glVertex3d(0, 0, -1); glColor3ub(255, 0, 0); glVertex3d(0, 0, 0); glVertex3d(1, 0, 0); glEnd(); //glRotated(angleX, 1, 0, 0); //glRotated(angleY, 0, 1, 0); glBegin(GL_QUADS); glColor3ub(255, 0, 0); glVertex3d(-1, -1, 1); // Red and green face glVertex3d(-1, 1, 1); glColor3ub(0, 255, 0); glVertex3d(1, 1, 1); glVertex3d(1, -1, 1); glVertex3d(1, -1, 1); // Green and yellow face glVertex3d(1, 1, 1); glColor3ub(252, 242, 0); glVertex3d(1, 1, -1); glVertex3d(1, -1, -1); glVertex3d(1, -1, -1); // Yellow and azur face glVertex3d(1, 1, -1); glColor3ub(66, 253, 234); glVertex3d(-1, 1, -1); glVertex3d(-1, -1, -1); glVertex3d(-1, -1, -1); // Azur and red face glVertex3d(-1, 1, -1); glColor3ub(255, 0, 0); glVertex3d(-1, 1, 1); glVertex3d(-1, -1, 1); glVertex3d(-1, 1, 1); // Up face glColor3ub(66, 253 ,234); glVertex3d(-1, 1, -1); glColor3ub(252, 242, 0); glVertex3d(1, 1, -1); glColor3ub(0, 255, 0); glVertex3d(1, 1, 1); glColor3ub(255, 0, 0); glVertex3d(-1, -1, 1); // Down face glColor3ub(66, 253 ,234); glVertex3d(-1, -1, -1); glColor3ub(252, 242, 0); glVertex3d(1, -1, -1); glColor3ub(0, 255, 0); glVertex3d(1, -1, 1); glEnd(); glFlush(); SDL_GL_SwapBuffers(); } Message d'erreur : Code : Console error LNK2019: unresolved external symbol "unsigned int __cdecl loadTexture(char const *,bool)" (?loadTexture@@YAIPBD_N@Z) referenced in function "void __cdecl __Paint(void)" (?__Paint@@YAXXZ)</
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
magnanime
|
# Posté le 19/06/2007 à 10:04:04 |
![]() Groupe : Membres |
A ta place, je déclarerait la variable 'texture1' en temps
que variable globale, puis je la chargerait dans main(). Aussi, la fonction qui fait correspondre un vertex avec un point de la texture est: Code : C++ glTexCoord2d (double x_texture, double y_texture)
Pour t'aider, glTexCoord2d (0, 0) -> coin inférieur gauche glTexCoord2d (1, 0) -> coin inférieur droit glTexCoord2d (0, 1) -> coin supérieur gauche glTexCoord2d (1, 1) -> coin supérieur droit PS: Désolé, je ne comprend pas le message d'erreur( bien que je n'ai pas de problèmes avec l'anglais ).
Édité
le 19/06/2007 à 10:10:00
par magnanime
|
-Skypers-
|
# Posté le 19/06/2007 à 12:23:06 |
template <class Skypers>![]() Groupe : Membres |
En fait, le problème vient juste du fait que je ne peux pas utiliser loadTexture. Si je déclare quelque part dans mon code
Code : C++ GLuint texture;
le code compile nikel. Par contre, si j'appel quelque part Code : C++ texture = loadTexture("texture01.jpg", /*true*/);
il m'afficher ce message d'erreur
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
Yno
|
# Posté le 19/06/2007 à 17:27:44 |
SCE![]() Groupe : Membres |
Code : C++
texture = loadTexture("texture01.jpg", /*true*/);
Ca n'existe ni en C, ni en C++ (quoiqu'à confirmer), la virgule est de trop ici. Tu compiles bien en C++ ?
Édité
le 19/06/2007 à 17:30:34
par Yno
Tutos OpenGL : Les shaders en GLSL | Rendus optimisés avec les VBOs FAQs programmation : FAQ C | FAQ OpenGL / SDL / GTK+ Un moteur 3D à que il rox | Un canal IRC qu'il est bieng : #opengl@irc.epiknet.org |
-Skypers-
|
# Posté le 19/06/2007 à 18:03:59 |
template <class Skypers>![]() Groupe : Membres |
oui je suis en C++, et mon dans mon code le true n'est pas commenté, désolé de cette imprécision...
J'ai essayé, en me renseignant, d'apprendre à programmer moi-même cette phase. Donc si j'ai bien compris, il faut faire ça : Code : C++ GLuint glTexLoad(const char name[]) { GLuint ID; // La texture à retourner SDL_Surface *sdl_Texture = NULL; // L'image à charger SDL_Surface *gl_Texture = NULL; // L'image convergée en OpenGL SDL_Surface * gl_Fliped_Texture = NULL; // L'image OpenGL retournée sdl_Texture = IMG_Load(name); // Load picture if (sdl_Texture == NULL) { return 0; } else { gl_Texture = SDL_ConvertSurface(sdl_Texture, sdl_Texture->format, SDL_SWSURFACE); // Conversion de SDL à OpenGL gl_Fliped_Texture = flipSurface(gl_Texture); // Retournement glGenTextures(1, &ID); // Identification glBindTexture(GL_TEXTURE_2D, ID); // Activation glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); // Spécification de la répétition et combinaison [pixels texture/tampon chronomatique] glTexImage2D(GL_TEXTURE_2D, 0, 4, gl_Fliped_Texture->w, gl_Fliped_Texture->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, gl_Fliped_Texture->pixels); // Définition de texture return ID; // Retour de la texture } } Ce code est certainement faux, car je n'ai vraiment pas tout compris, quelqu'un pourrait-il m'éclairer ? ![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
Retour au forum "Langage C++" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
88 Zéros connectés |
9 requêtes |
0.0956s (0.0816s)
