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 :

Bug glGetDoublev(GL_MODELVIEW_MATRIX, modelView);


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Par défaut Bug glGetDoublev(GL_MODELVIEW_MATRIX, modelView);
    Voila, j'essaye de convertir des coordonnées depuis l'espace objet vers l'espace caméra (world to eye coordinates).

    Pour ce faire, j'essaye d'utiliser glGetDoublev(GL_MODELVIEW_MATRIX, modelView);

    Mais voila, j'ai un big bug, j'ai fait un programme simple pour vous montrer le bug:
    Le programme suivant devrait me donner un truc genre:
    1 0 0 0
    0 1 0 0
    0 0 1 0
    0 0 0 1

    Mais il me donne n'importe quoi !
    int main(int argc, char* argv[])
    {
    int i;
    double modelView[16];

    printf("Bug modelview!\n\n");

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glGetDoublev(GL_MODELVIEW_MATRIX, modelView);
    for(i = 0; i < 16; i++) {
    printf("%f\n", modelView[i]);
    }
    getc(stdin);
    return 0;
    }
    Ha l'aiide ! Merci à tous ceux qui m'aideront.

  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
    T'as un peu oublié de créer un contexte OpenGL.

  3. #3
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Comme l'a bien dit Laurent, il faut créer un contexte pour OpenGL.

    Le fonction d'OpenGL ne peuvent pas s'utiliser sans que OpenGL soit d'abord initialiser.

    GLUT peut tout a fait t'aider à faire ca rapidement

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Par défaut
    En plein dans le mile les gars !

    Dans mon appli, quand je bougeai la souris, j'oubliais de réactiver mon wglContext...

    Mon tri fonctionne parfaitement maintenant.

    Par la même occasion, je donne un peu de code (en vrac, ça peut toujours aider):

    Pour récupérer le profondeur d'un face dans l'espace caméra:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    float C3DVolume::GetEyeDepth(vector &v)
    {
    	GLfloat mat[16];
    	glMatrixMode(GL_MODELVIEW);
     
    	glGetFloatv( GL_MODELVIEW_MATRIX, mat);
     
    	return (mat[8]*v[0] + mat[9]*v[1] + mat[10]*v[2] + mat[11]);
    }

    Après avec ça, il faut trier les faces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void C3DVolume::AlphaSort() {
    	unsigned int q;
    	vector position;
    	size_t nQuads = m_resX*m_resY*m_resZ;
    	for (q = 0; q < nQuads; q++) {
    		m_vQuads[q]->d = GetEyeDepth(m_vQuads[q]->center);
    	}
     
    	qsort(m_vQuads, nQuads, sizeof(Quad*), quadComp);
    }

    A chaque rendu, après les transfo, on appelle AlphaSort().

  5. #5
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2003, 16h37
  2. Bug new build ??
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 31/01/2003, 10h30

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