begin process at 2012 05 29 22:34:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

probleme de texture pour creer une explosion


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme de texture pour creer une explosion

dimanche 11 décembre 2005 à 23:22:39 | probleme de texture pour creer une explosion

elfiosi

  Bonjour a tous,

Jai un probleme de texture lorsque jessaie de creer une explosion pour un jeu video. jutilise une image qui represente une etincelle avec une fond noir. Pour simuler lexplosion je cree donc deux panneaux auquels j'applique ma texture puis jutilise une array pour modifier tout ca en modifiant la taille et le alpha prametre pour la transparence. le probleme c'est que je ne sais pas comment me debarasser du fond noir!! jaimerai juste avoir lintincelle qui apparait car j'ai une autre texture de fond qui cree un decor.

merci pour votre aide, jai ma demo en debut de semaine !!!!

voici le code pour la texture.



class explosion
{
private:

 struct Explosion
 {
  
    float    x;
    float    y;
    float    z;
    float   _Alpha;
    float   _Scale;
 };

 GLuint dlist,texture[1];     

 Explosion ExplosionArray[20];

 public:



//////////////
void explosion :: initExplosion(GLvoid)         // jinitialise mon explosion ds le init()
{
 
 
   float df=100.0;

 glClearDepth(1.0f);         // Depth Buffer Setup
 glEnable(GL_DEPTH_TEST);       // Enables Depth Testing
 glDepthFunc(GL_LEQUAL);        // The Type Of Depth Testing To Do
 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 

   glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

 glShadeModel(GL_SMOOTH);
 glEnable(GL_CULL_FACE);
 glEnable(GL_DEPTH_TEST);


 glMaterialfv(GL_FRONT,GL_SPECULAR,spec_);
 glMaterialfv(GL_FRONT,GL_SHININESS,&df);

 glEnable(GL_LIGHTING);
 glLightfv(GL_LIGHT0,GL_POSITION,posl_);
 glLightfv(GL_LIGHT0,GL_AMBIENT,amb2_);
 glEnable(GL_LIGHT0);

 glLightModelfv(GL_LIGHT_MODEL_AMBIENT,amb_);
 glEnable(GL_COLOR_MATERIAL);
 glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
  
 glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE);
 glEnable(GL_TEXTURE_2D);

 LoadGLTexture(); //load ma texture

 //4 panneaux

    glNewList(dlist=glGenLists(1), GL_COMPILE);
    glBegin(GL_QUADS);
 glRotatef(-45,0,1,0);
 glNormal3f(0,0,1);
 glTexCoord2f(0.0f, 0.0f); glVertex3f(-5,-4,0);
 glTexCoord2f(0.0f, 1.0f); glVertex3f(5,-4,0);
 glTexCoord2f(1.0f, 1.0f); glVertex3f(5,4,0);
 glTexCoord2f(1.0f, 0.0f); glVertex3f(-5,4,0);
    glNormal3f(0,0,-1);
 glTexCoord2f(0.0f, 0.0f); glVertex3f(-5,4,0);
 glTexCoord2f(0.0f, 1.0f); glVertex3f(5,4,0);
 glTexCoord2f(1.0f, 1.0f); glVertex3f(5,-4,0);
 glTexCoord2f(1.0f, 0.0f); glVertex3f(-5,-4,0);

 glNormal3f(1,0,0);
 glTexCoord2f(0.0f, 0.0f); glVertex3f(0,-4,5);
 glTexCoord2f(0.0f, 1.0f); glVertex3f(0,-4,-5);
 glTexCoord2f(1.0f, 1.0f); glVertex3f(0,4,-5);
 glTexCoord2f(1.0f, 0.0f); glVertex3f(0,4,5);
    glNormal3f(-1,0,0);
 glTexCoord2f(0.0f, 0.0f); glVertex3f(0,4,5);
 glTexCoord2f(0.0f, 1.0f); glVertex3f(0,4,-5);
 glTexCoord2f(1.0f, 1.0f); glVertex3f(0,-4,-5);
 glTexCoord2f(1.0f, 0.0f); glVertex3f(0,-4,5);
 glEnd();
    glEndList();  // list que jappelle lors dune explosion
}


void explosion :: smallExplosionAt(double x_, double y_, double z_)                                    //creer une explosion aux coordonees x_, y_, z_
{
 
 for(int j=0;j<20;j++)
       {
        if (ExplosionArray[j]._Alpha<=0)
        {

         ExplosionArray[j]._Alpha=0.5;
         ExplosionArray[j].x=x_;
         ExplosionArray[j].y=y_;
         ExplosionArray[j].z=z_;
         ExplosionArray[j]._Scale=1;

     
         break;
        }
       }


}

void explosion ::checkExplosion(void)  dans le displayCallBackProc

{

 glEnable(GL_TEXTURE_2D);
 glEnable(GL_BLEND);
 glDepthMask(GL_FALSE);
  glBindTexture(GL_TEXTURE_2D, texture[0]); 
 for(int i=0; i<20; i++)
 {
  if(ExplosionArray[i]._Alpha>0)            // verifie si il ya une explosion
  {

     glPushMatrix();
     
       ExplosionArray[i]._Alpha-=0.01f;      //modifie les paraametres pour donner                                                           // une impression de mouvement
     ExplosionArray[i]._Scale+=0.03f;
     glColor4f(1,1,0,ExplosionArray[i]._Alpha); 
    
     glScalef(ExplosionArray[i]._Scale,ExplosionArray[i]._Scale,ExplosionArray[i]._Scale);
          
glTranslatef(((float)ExplosionArray[i].x)/ExplosionArray[i]._Scale, (float)ExplosionArray[i].y/ExplosionArray[i]._Scale, (float)ExplosionArray[i].z/ExplosionArray[i]._Scale);
       
     glColor4f(1.35, 0.78, 0.3,0.4);
     
   glCallList(dlist);  // apelle la list
   
    
   glPopMatrix();

  }
 
 }

 glDepthMask(GL_TRUE);
 glDisable(GL_BLEND);
   // glDisable(GL_TEXTURE_2D);
 glDisable(GL_LIGHTING);
 
}

lundi 12 décembre 2005 à 00:52:02 | Re : probleme de texture pour creer une explosion

luhtor

Ya pas moyen d'utiliser une texture transparente ? et donc avec un type qui gère la transparence. Le png ?
lundi 12 décembre 2005 à 01:18:25 | Re : probleme de texture pour creer une explosion

elfiosi

tu peux me donner plus de precisions, est ce quil faut telecharger une lib??

merci pour la reponse
lundi 12 décembre 2005 à 07:13:10 | Re : probleme de texture pour creer une explosion

neodelphi

Membre Club
Le TGA est très bien pour la 3D, il gère une couche de transparence et est très simple à charger...

neodelphi
lundi 12 décembre 2005 à 07:26:13 | Re : probleme de texture pour creer une explosion

elfiosi

c'est bon jai trouve le probleme je desactivais mon  glBlendFunc(GL_SRC_ALPHA, GL_ONE) qui permet de dessiner les polygones du plus proche au plus loin.... pas besoin de telecharger quoique ce soit les amis..



Cette discussion est classée dans : glvertex3f, gl, 0f, explosionarray, gltexcoord2f


Répondre à ce message

Sujets en rapport avec ce message

SDL Opengl lumiere [ par xian240482 ] Alors là, je comprend pas!Voila un mon code (ultra simplifier) et il ne marche pas : Il plante sur le glend() !Si c'est ,comme je le crois, une erreur les sous fenetres en glut n'en font qu'a leurs tetes [ par whikie ] Bonjour,je voudrais comprendre le placement des glutSubWindow.Voici les infos que j'ai :glutCreateSubWindow La fonction glutCreateSubWindow crée une BMP Transparante [ par barraq ] Voila j'ai un petit soucis de transparance avec les images BMP J'afficher mes arbres en utilisant le format TGA, mais la transparance ne semble marche OPENGL TEXTURE BMP [ par Batman60 ] bonjourvoici mon code compilé sur dev-cppc'est un cube tournant 3D affichant un bmp sur les six facesje voudrais texturer plusieurs bmp sur les six fa GL_POINTS--> au bord du suicide [ par satellite34 ] bon voila, je reposte car je pense avoir ciblé le probleme, et c'est du coté d'openGL qui a un truc qui m'echappe et non du wxGLCanvas;En fait j'arriv transparence en OpenGl [ par F0ra ] Bonjour, J'ai un problème en OpenGl Je voudrais rendre uniquement la couleur rose< Problème de placage de texture [ par unrealgun ] Bonjour,Je suis en train de développer uGUI en C++ sous linux avec SDL et OpenGL.Voila mon probleme : je charge une image PNG transparente avec SDL_Im Probleme sur une forme simple [ par faucheuse ] Tout d'abord je ne travaille pas sous Linux mais sous WindowsXP mais je n'ai pas trouver de sous-forum correspondant dsl.Alors voila, j'essaye de fair pikcing opengl [ par znb ] J 'ai fait un code et ça marche très bien; il détecte les couleurs des objets. Mais je veux que, pour une valeur particulière de la couleur, dessiner QT sous Visual C++ 2008 : SOUS XP [ par controlleur ] Bonjour j'ai rencontré une erreur l'or de l'exécution de mon programme : l'erreur c'est qu'il me dise que les QComboBox et QSlider que j'ai déclar


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,576 sec (4)

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