Bonjour,
J'ai un problème avec glAccum avec une ATI RADEON 9700 PRO, l'accumulation ne marche pas et si je fais un glGetError apres l'appel à la fonction il me retourne GL_INVALID_OPERATION.
Selon la specification de glAccum cela signifie soit qu'il a été placé entre un glBegin et un glEnd soit que le buffer n'a pas été créé.
J'ai essayé le même programme sur une autre machine avec une GeForce 5700 et la ça marche impec.
Donc apparemment c'est le buffer qui ne se créé pas.
La radeon est elle une carte si vieille que ça pour ne pas supporter glAccum (j'ai pas du tout idée de quand elle est sortie) ? Le problème ne viendrait-t-il pas d'ailleur ?
Pour info j'ai mis les derniers drivers du site d'ATI
Sinon voici le code d'un prog assez basique pour tester, sur la geforce ça fait un joli dégradé tandis que sur l'ATI ça n'affiche qu'un seul carré.
Merci d'avance pour vos réponses
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 #include <GL/openglut.h> #include <GL/glext.h> #include <iostream> using namespace std; void display() { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClearColor(0,0,0,1); glClear(GL_COLOR_BUFFER_BIT); glViewport(0,0,600,600); glOrtho(0,1,0,1,-1,1); for(int i=0;i<10;i++) { glClear(GL_COLOR_BUFFER_BIT); glTranslatef(0.05,0.05,0.05); glBegin(GL_QUADS); glColor3f(0.9,0.1,0.3); glVertex3f(0.,0.,0.); glVertex3f(0.,0.5,0.); glVertex3f(0.5,0.5,0.); glVertex3f(0.5,0.,0.); glEnd(); glAccum(GL_ACCUM,0.1); } glAccum(GL_RETURN,1.0); cout << (glGetError()!=GL_NO_ERROR); glutSwapBuffers(); } int main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_ACCUM); glutInitWindowPosition(50,50); glutInitWindowSize(600,600); int window=glutCreateWindow("gni"); glClearAccum(0,0,0,1); glClear(GL_ACCUM_BUFFER_BIT); glutDisplayFunc(display); glutMainLoop(); return 0; }
Partager