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:
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 double **dataGL; ... dataGL = new double *[width * height]; for (temp = 0; temp < width * height; temp++) { dataGL[temp] = new double[4]; }
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.
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(); }
je met aussi mon reshape et mon main, au cas ou ca vienne de la :
Voila donc si quelqu'un a une idée, je suis prenneur :p
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; }
et merci à tous ceux qui m'auront lue jusque ici :p
Partager