IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

probleme GLX error !


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut probleme GLX error !
    J'utilise la carte graphique pour faire quelque calcul en utilisant un FBO et un shader.
    Apres un certain nombre d'itération mon programme s'arrete et m'écrit ceci :

    X Error of failed request: BadAlloc (insufficient resources for operation)
    Major opcode of failed request: 144 (GLX)
    Minor opcode of failed request: 27 ()
    Serial number of failed request: 558
    Current serial number in output stream: 559

    est ce que quelqu'un à déja eu ce genre d'erreur?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    On dirait que tu oublies de libérer certaines ressources, et que ta mémoire sature au bout d'un moment. Il faudrait voir ton code.

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Citation Envoyé par Laurent Gomila
    On dirait que tu oublies de libérer certaines ressources, et que ta mémoire sature au bout d'un moment. Il faudrait voir ton code.
    Merci pour ta réponse, je vais essayer de voir ou j'oublie de liberer de la memoire. Je ne sait pas trop si sa vien de mon FBO.

    pour le code, je veut bien en mettre un bout mais c'est un peu le bordel donc je pense que sa va plus te decourager que t'aider..bref:
    ma fonction d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    void DrawGLScene()
    {
    	glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);	// Clear The Screen And The Depth Buffer
     
    	glLoadIdentity();				// Reset The View
     
    	glTranslatef(0.0f,0.0f,-6.0f);		// Draw the pyramid in the middle of the screen
     
    	glRotatef(rtri,0.0f,1.0f,0.0f);		// Rotate The Pyramid On The Y axis 
    	glRotatef(rtri,1.0f,0.0f,0.0f);		// Rotate The Pyramid On The x axis 
      // draw a pyramid (in smooth coloring mode)
    	glBegin(GL_TRIANGLES);				// start drawing a pyramid
     
      // front face of pyramid
    	glColor3f(1.0f,0.0f,0.0f);			// Set The Color To Red
    	glVertex3f(p1->getPos(0),p1->getPos(1) ,p1->getPos(2));		        // Top of triangle (front)
    	glVertex3f(p2->getPos(0),p2->getPos(1),p2->getPos(2));		// left of triangle (front)
    	glVertex3f(p3->getPos(0),p3->getPos(1),p3->getPos(2));		        // right of traingle (front)	
     
      // right face of pyramid
    	glColor3f(0.0f,1.0f,0.0f);			// Red
    	glVertex3f(p1->getPos(0),p1->getPos(1) ,p1->getPos(2));		// Top Of Triangle (Right)
    	glVertex3f(p3->getPos(0),p3->getPos(1) ,p3->getPos(2));		// Left Of Triangle (Right)
    	glVertex3f(p4->getPos(0),p4->getPos(1) ,p4->getPos(2));		// Right Of Triangle (Right)
     
     
      // left face of pyramid.
    	glColor3f(0.0f,0.0f,1.0f);			// Red
    	glVertex3f(p1->getPos(0),p1->getPos(1) ,p1->getPos(2));		// Top Of Triangle (Left)
    	glVertex3f(p4->getPos(0),p4->getPos(1) ,p4->getPos(2));		// Left Of Triangle (Left)
    	glVertex3f(p2->getPos(0),p2->getPos(1) ,p2->getPos(2));		// Right Of Triangle (Left)
     
      // base face of pyramid
    	glColor3f(0.5f,0.5f,0.5f);			// grey
    	glVertex3f(p2->getPos(0),p2->getPos(1) ,p2->getPos(2));	
    	glVertex3f(p3->getPos(0),p3->getPos(1) ,p3->getPos(2));
    	glVertex3f(p4->getPos(0),p4->getPos(1) ,p4->getPos(2));		
     
    	glEnd();					// Done Drawing The Pyramid
     
    	if (!p1->check() || !p2->check() || !p3->check() || !p4->check()){
     
    			p1->resetForce();
    			p2->resetForce();
    			p3->resetForce();
    			p4->resetForce();
     
    			p1->computeForce();
    			p2->computeForce();
    			p3->computeForce();
    			p4->computeForce();
     
    			bindToText();
    			initFBO();
     
    			performComputation();
     
    			transferFromTexture(data,0);
    			transferFromTexture(data2,1);
    			transferFromTexture(force,2);
    			setParticle();
    			glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT, target, 0, 0);
    			glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT1_EXT, target, 0, 0);
    			glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    	}
     
      // swap the buffers to display, since float buffering is used.
    	glutSwapBuffers();
    }
    l'endroit le plus sensible pour l'alocation de la memoire serait les float* data, data2 et force

    je l'ai utilise dans la fonction bindToText():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void bindToText(){
    	int j=4;
    	int k=8;
    	int l=12;
    	for (int i=0; i<3; i++) {
    		force[i] = p1->getF(i);
    		force[j] = p2->getF(i);
    		force[k] = p3->getF(i);
    		force[l] = p4->getF(i);
    		j++;k++;l++;
    	}
    	transferToTexture(force,fTexture);
    }
    puis transfertoTexture et transferFromTexture()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void transferFromTexture(float* oData,int n) {
    	glReadBuffer(attachmentpoints[n]);
    	glReadPixels(0, 0, texSize, texSize,GL_RGB,GL_FLOAT,oData);
    }
    /**
     * Transfers data to texture. 
     */
    void transferToTexture (float* idata, GLuint texID) {
    	// version (a): HW-accelerated on NVIDIA 
    	glBindTexture(target, texID);
    	glTexSubImage2D(target,0,0,0,texSize,texSize,GL_RGB,GL_FLOAT,idata);
    }
    et puis le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    int main(int argc, char **argv) 
    {  
    	data = (float*)malloc(texSize*texSize*4*sizeof(float));//texSize=4
     
    	// create data vectors
    	data2 = (float*)malloc(texSize*texSize*4*sizeof(float));
     
    	// create data vectors
    	force = (float*)malloc(texSize*texSize*4*sizeof(float));
    	glutInit(&argc, argv);  
     
    ..........................................
    ......................................
    /* Start Event Processing Engine */  
    	glutMainLoop();  
    	free(data);
    	free(data2);
    	free(force);
     
    	return 1;
    }
    Voila, je met pas tout au sinon personne aura le courage de lire....je v essayer de voir ou sa peut etre
    merci!

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    A priori rien de louche dans ce code.

    Je pense que tu devrais retirer progressivement des choses de ton code, et voir à quel moment tu n'as plus cette erreur.

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Citation Envoyé par Laurent Gomila
    A priori rien de louche dans ce code.

    Je pense que tu devrais retirer progressivement des choses de ton code, et voir à quel moment tu n'as plus cette erreur.
    je suis en train de regarder merci!!!!

    j'ai aussi un souci d'affichage, apres avoir recuperer les donnée dans mes tableau (data,data2 qui corresponde a des position) a partir des FBO, je désactive le FBO (glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0) et je dessine mon tetraedre.

    Mais il ne s'affiche pas, je m'embrouille un peu avec tout ces buffer,enfin bref apres le premier glutswapbuffer() je perd l'image...

Discussions similaires

  1. Probleme On Error GoTo
    Par CharboTeam dans le forum VBA Access
    Réponses: 5
    Dernier message: 03/07/2008, 11h01
  2. Probleme On Error GoTo
    Par CharboTeam dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/07/2008, 10h20
  3. Probleme :"[Linker Error] Unresolved external"
    Par Dusty_Luke dans le forum C++Builder
    Réponses: 6
    Dernier message: 22/03/2007, 22h27
  4. Probleme Object Error Expected sur un OnClick
    Par herbert dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/07/2006, 20h24
  5. [Kylix] probleme (LINKER ERROR)
    Par subzero82 dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2004, 19h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo