Faire bouger une primirtive opengl/glut

Résolu
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007 - 25 oct. 2004 à 21:35
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007 - 26 oct. 2004 à 15:59
Bonjour !! J'aimerai savoir, j'ai bo chercher, mais a chasue fois ça ne repond pas a ma question qui est la suivante : Pour faire bouger une primitive sur laquelle il ya une texture, par exemple comme dans un jeu, comment doit-on proceder.Merci d'avance @++++
Bonne soirée

Kenavo ar vech al !

13 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 oct. 2004 à 22:25
deja saches que le rendu c'est la génération de l'image qui sera afficher à l'ecran

à chaque fois que tu swap les 'frame buffer' (en general on est en double) tu affiche une nouvelle image

donc

"tout effacer de reafficher une image", ca se fais à chaque rendu

maintenant pour ce qui est de deplacer tes objets avec des transformations de matrices ou en modifiant les coordonnées des points, c'est à toi de voir

coté perf utilises plutot les transformations de matrices qui sont déléguée au gpu (beaucoup plus rapide que ton cpu sur ce genre de calcul)

mais il me semble que ca a des limites au niveau des possibilité (du en parti à la pronfondeur de la pile des matrice), la je demande confirmation
3
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
25 oct. 2004 à 23:11
Moué bah vu qu'apparemment tu veux faire un jeu dans le même genre que Coucous flingueurs, c'est à dire en 2D, ben je te conseille de juste afficher à des endroits différents; glTranslatef n'a pas tellement d'intérêt en 2D.

Je te conseille aussi de t'écrire une classe ou une structure Point2D qui contiendrait les coordonnées x et y d'un point.
De même, une classe Sprite qui correspondrait à un objet par exemple, et qui contiendrait un objet Point2D.
Enfin ce ne sont que des suggestions, et ça varie bcp suivant le projet (une classe Sprite "générale", je ne sais pas si c'est une bonne solution...).

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
3
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
26 oct. 2004 à 00:28
Ça dépend de l'ordre dans lequel tu commandes l'affichage; désactive le Z-buffer (pas de glEnable(GL_DEPTH_TEST)), et puis dessine d'abord ton fond, puis ce qui doit aller dessus, le tout sur le plan z=0.

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
3
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 oct. 2004 à 21:45
ben faut pas que ce soit à la meme place d'un rendu à l'autre ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
25 oct. 2004 à 22:01
Ba par exemple dans coucou flingueur 2d, pour faire bouger les avions,
ils ont utiliser des translatef ou alros ils ont redessiner une images a chaque fois a un endroit diff. Jespre que tu as compris ce que je veux dire :D
@++++
Kenavo ar vech al !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 oct. 2004 à 22:07
oui, et tu viens de repondre a ta question, non ?
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
25 oct. 2004 à 22:11
Ba en faite, je voulais savoir le + utiliser et le plus "normal" poru faire bouger une ^primitive serait de faire une translatino avec translatef ou alors de tout effacer de reafficher une image, de tout effacer de reafficher une image ...
tu en penses quoi ?
Kenavo ar vech al !
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
25 oct. 2004 à 23:32
k merci de vos reponses je vais aller me documenter :)
bonne prog et bonne nuit !
Kenavo ar vech al !
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
25 oct. 2004 à 23:38
Heu re, j'aimerai savoir comment fait-on pour afficher une texture sur un autre qui est comme fond ?
encore bonne prog et bonne nuit ^__^
Kenavo ar vech al !
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
26 oct. 2004 à 10:49
Salut,
K merci pour vos reponses, heu dit funto66 ta une idée de tuto qui explique bien la façon dont il faut proceder pour donne du mouvemement a une primitive en comme tu la dit plus haut la redessinant, car je ne sias pas trop a quel mot cles chercher dans google ... merci d'avance.
Bonne journée et bonne prog bien sur ;)

Kenavo ar vech al !
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
26 oct. 2004 à 11:21
Arrive un moment dans la prog où il faut oublier les tutos et penser un peu par soi-même...
Et pour des trucs comme ça, ben fais un minimum de recherche personnelle, faire des essais, regarder les sources des autres, faire des dessins sur papier pr mieux cerner le pb...;)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
26 oct. 2004 à 12:18
Moui tu dois avoir raison ...
bon ben merci encor à tous :D
bonne continuation
Bonne prog et @+++
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
26 oct. 2004 à 15:59
Salut les gars, c'est encore moi avec encore une question ^^
J'ai tenter de superposer 2tga, ça compile mais jai un carre blanc au lieu d'avoir une image qui s'affiche pour patate.tga :D
code :
// main.cpp
 
#include  
using namespace std;

#include "TGALoader.h"
#include <GL/glut.h>

int g_w_window=800, g_h_window=600;
int g_ID_window;
GLuint g_ID_texture=1;

void Display();
void Reshape(int w, int h);
void Init(char* fichier);
void Touche(unsigned char key, int x, int y);

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(g_w_window, g_h_window);
glutInitWindowPosition(50, 50);
glutCreateWindow("TGA Loader");

Init("fond.tga");
Init("patate.tga");

// Callbacks
glutDisplayFunc(Display);
glutReshapeFunc(Reshape);

glutMainLoop();
return 0;
}

void Init(char* fichier)
{
glClearColor(0.3, 0.2, 0.7, 0.0);
glEnable(GL_COLOR);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

TGALoader tga_loader;
TGAErrorCode ret;
TGAFiltering filtering = TGA_NO_FILTER;

ret = tga_loader.LoadOpenGLTexture(fichier, &g_ID_texture, filtering);
g_ID_texture++;

if(ret != TGA_OK)
cerr << "Erreur TGA : " << ret << endl;
}

void Reshape(int w, int h)
{
glViewport(0, 0, g_w_window=w, g_h_window=h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h);
}

void Display()
{
glClear(GL_COLOR_BUFFER_BIT);// | GL_DEPTH_BUFFER_BIT);
glDisable(GL_DEPTH_TEST);
glColor3f(1.0, 1.0, 1.0);
glBindTexture(GL_TEXTURE_2D, 1);
glBegin(GL_QUADS);
glTexCoord2i(0, 0); glVertex2i(0, 600);//glVertex2i(0, 600);
glTexCoord2i(0, 1); glVertex2i(800, 600);//glVertex2i(800, 600);
glTexCoord2i(1, 1); glVertex2i(800, 0);//glVertex2i(800, 0);
glTexCoord2i(1, 0);	glVertex2i(0, 0);//glVertex2i(0, 0);
glEnd();

glBindTexture(GL_TEXTURE_2D, 2);
glBegin(GL_QUADS);
glTexCoord2i(0, 0); glVertex2i(176,		192);//glVertex2i(0, 600);
glTexCoord2i(0, 1); glVertex2i(176,		192+256);//glVertex2i(800, 600);
glTexCoord2i(1, 1); glVertex2i(176+512,	192+256);//glVertex2i(800, 0);
glTexCoord2i(1, 0);	glVertex2i(176+512,	192);//glVertex2i(0, 0);
glEnd();

glutSwapBuffers();
glutPostRedisplay();
}

void Touche(unsigned char key, int x, int y)
{
if(key==27)
{
exit(0);
}
}


Et j'ai une petit question a part, les vector c'es tcomme des tableaux c'est ça ?
VOila, en esperant ne pas vous inportunez :D Bonne continuation
Kenavo ar vech al !
0
Rejoignez-nous