Bonjour,
J'essaye de faire marcher le multitexturing de OpenGL.
Je sais que j'ai déjà réussi il y a un moment, mais soit je m'y prends mal, soit le problème vient de mon changement d'environnement (linux -> Windows)
Je précise que j'utilise le bonding python de OpenGL, mais ça ne devrait rien changer.
Plutôt qu'un long discours incompréhensible, je vais mettre mon code (simplifié) qui marche et mon code qui ne marche pas.
Voilà ce qui marche (sans multitexturing):
Et voilà ce qui ne marche pas (avec multitexturing) :
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 while not done: glColor4f(1.0, 1.0, 1.0, 1.0) glEnable(GL_TEXTURE_2D) glBindTexture(GL_TEXTURE_2D, rayangleTexture) glBegin(GL_POLYGON) glTexCoord2f(0.0, 0.0) glVertex2f(50.0, 50.0) glTexCoord2f(1.0, 1.0) glVertex2f(100.0, 100.0) glTexCoord2f(1.0,0.0) glVertex2f(100.0, 50.0) glEnd() pygame.display.flip() done = handleEvents() glClear(GL_COLOR_BUFFER_BIT)
Ca me donne cette erreur :
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 while not done: glActiveTextureARB( GL_TEXTURE0_ARB ) glEnable(GL_TEXTURE_2D) glBindTexture(GL_TEXTURE_2D, rayangleTexture) glActiveTextureARB( GL_TEXTURE1_ARB ) glEnable(GL_TEXTURE_2D) glBindTexture(GL_TEXTURE_2D, raydistanceTexture) glColor4f(1.0,1.0,1.0,1.0) glBegin(GL_QUADS) glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 0.0) glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0, 0.0.0) glVertex2f(0.0, 0.0) glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 1.0) glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 1.0) glVertex2f(0.0, 600.0) glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0, 1.0) glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 1.0) glVertex2f( 800.0, 600.0) glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0, 0.0) glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 0.0) glVertex2f(800.0, 0.0) glEnd() pygame.display.flip() done = handleEvents() glClear(GL_COLOR_BUFFER_BIT)
Et voilà mon initialisation :
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 Traceback (most recent call last): File "E:\blabla\src\main.py", line 119, in <module> glEnd() File "C:\Python26\lib\site-packages\OpenGL\latebind.py", line 61, in __call__ return self.wrapperFunction( self.baseFunction, *args, **named ) File "C:\Python26\lib\site-packages\OpenGL\GL\exceptional.py", line 57, in glEnd return baseFunction( ) File "C:\Python26\lib\site-packages\OpenGL\error.py", line 208, in glCheckError baseOperation = baseOperation, OpenGL.error.GLError: GLError( err = 1282, description = 'op\xe9ration non valide', baseOperation = glEnd, cArguments = () )
Est-ce quelqu'un aurait une idée de ce qui me manque?
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 pygame.init() pygame.display.set_mode((800,600), pygame.DOUBLEBUF | pygame.OPENGL, 32) glClearColor(0.0, 0.0, 0.0, 1.0) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluOrtho2D(0, 100, 0, 100) glMatrixMode(GL_MODELVIEW) glEnable(GL_TEXTURE_2D) glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
J'ai entendu parler d'un wglGetProcAddress qui servirait sous windows mais je n'ai pas trop compris et l'erreur qu'avait le gars n'était pas la même que moi.
N'hésitez pas si je ne suis pas assez précis ou pas assez clair.
Merci beaucoup d'avance
J.
Partager