Problème avec le multitexturing
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):
Code:
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) |
Et voilà ce qui ne marche pas (avec multitexturing) :
Code:
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) |
Ca me donne cette erreur :
Code:
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 = ()
) |
Et voilà mon initialisation :
Code:
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) |
Est-ce quelqu'un aurait une idée de ce qui me manque?
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.