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 :

glDrawPixels GL_RGBA et GL_DOUBLE


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut glDrawPixels GL_RGBA et GL_DOUBLE
    Bonsoir à tous.
    Je suis actuellement en train de coder un petit truc pour charger des volumes numériques au format Dicom. Jusque la tous ce passe bien mais c'est à l'affichage que ca coince. j'ai un table appelé dataGL ou je stock les valeur de mes pickel pour une frame.
    En fait, faites abstraction de la notion de volume, c'est juste une tranche que j'essaye d'afficher.
    dataGL est alloué comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double **dataGL;
    	...
    	dataGL = new double *[width * height];
     
    	for (temp = 0; temp < width * height; temp++)
     
    	{
     
    		dataGL[temp] = new double[4];
     
    	}
    apres, dans ma fonction display, je fait ceci:
    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
    void display (void)
     
    {
     
    	glClear (GL_COLOR_BUFFER_BIT);
     
    	glPushMatrix ();
     
    	glRasterPos2i (0, 0);
     
    	glDrawPixels (tempImage->getWidth(), tempImage->getHeight(), GL_RGBA, GL_DOUBLE, tempImage->getDataGL());
     
    	glPopMatrix();
     
    	glutSwapBuffers();
     
    	glFlush();
     
    }
    Et la c'est le drame ecran noir. Pourtant, j'ai verifié le contenu de dataGL juste avant le glDrawPixels et sont contenu est correcte.

    je met aussi mon reshape et mon main, au cas ou ca vienne de la :
    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
    void reshape (int width, int height)
     
    {
     
    	glViewport (0, 0, tempImage->getWidth(), tempImage->getHeight());
     
    	glMatrixMode (GL_PROJECTION);
     
    	glLoadIdentity ();
     
    	gluOrtho2D (0, tempImage->getWidth(), 0, tempImage->getHeight());
     
    	glMatrixMode (GL_MODELVIEW);
     
    	glLoadIdentity ();
     
    }
     
     
     
    int main(int argc, char **argv)
     
    {
     
    	glutInit (&argc, argv);
     
     
     
    	tempImage = new Image();
     
     
     
    	cout << "Ouverture du dicom test.dcm\n";
     
    	tempImage->openDicom("test.dcm");
     
    	tempImage->fillDataGL(25);
     
     
     
    	glClearColor (.0, .0, .0, .0);
     
    	glutInitWindowPosition (50, 50);
     
    	glutInitWindowSize (tempImage->getWidth(), tempImage->getHeight());
     
    	glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE);
     
    	glutCreateWindow ("Test d'affichage");
     
    	glutDisplayFunc (display);
     
    	glutReshapeFunc (reshape);
     
     
     
    	glutMainLoop ();
     
    	return 0;
     
    }
    Voila donc si quelqu'un a une idée, je suis prenneur :p
    et merci à tous ceux qui m'auront lue jusque ici :p

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    Bon J'ai fini par trouver, et ça ce voit que j'ai besoin de travail encore ^^
    En fait déjà, GL_DOUBLE n'existe pas pour glDrawPixels, il faut utiliser GL_FLOAT.
    Ensuite, GL_FLOAT implique des valeur comprises entre 0 et 1 donc faut diviser les anciennes valeurs par 255.
    Je dit peut etre des bétises, mais vue que je travaille sur des doubles, je pense que c'est moins couteux de transformer en float que en int, enfin je sais pas trop :p
    Et enfin, je ne peut pas utiliser de tableaux dynamiques à plusieurs dimensions pour fournir à glDrawPixels. Soit je lui donne un tableau dynamique à une dimension (RGBARGBARGBA... dans mon cas) soit je donne un tableau definie avec une taille fixe de la forme ([hauteur][largeur][4])

    Merci quand meme à ceux qui m'ont lue ^^

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

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