Bonjour,

en consultant la page sur le sujet OpenGL/Python du site

http://www.developpez.net/forums/d12...?highlight=BGE

j'ai un souci pour activer les script démo sur le GE de Blender 2.65.
Certainement du à une compatibilité de version, mais comment y pallier ?


Voici le code du premier filtre

#Filtre1.py

from bge import logic

cont = logic.getCurrentController()
obj = cont.owner

filter = cont.actuators['Filter 2D'] # Récupérer l'actionneur pour le filtre 2D

# Notez l'utilisation du Python pour le BGE utilise Python, le filtre 2D (ou les shaders 3D) est
# écrit en C++ et utilise le GLSL. Ainsi, la syntaxe et le style de notre script sont écrits en Python
# jusqu'à ce que l'on commence à écrire le code du filtre en dessous, dans lequel on passe au C++
# (d'où les points-virgules et les commentaires commençants par //).

filter.shaderText = """
uniform sampler2D bgl_RenderedTexture;

void main(void)
{
vec4 color = texture2D(bgl_RenderedTexture, gl_TexCoord[0].st);
// Cette ligne récupère la couleur de la texture que le BGE utilise suivant les coordonnées passées
// on utilise la coordonnée de texture de chaque pixel dans la fenêtre d'affichage avec
// gl_TexCoord[0]. Je crois que gl_TexCoord[1] contient les coordonnées de texture de
// chaque pixel (dans la fenêtre d'affichage) après avoir été adapté à la taille de la
// fenêtre.

gl_FragColor = color.gbra;
// Cette ligne définit la couleur finale de chaque pixel (gl_FragColor) comme étant le vecteur
// de couleur, dans lequel r est le canal rouge, b est le bleu, g est le vert et a est le canal
// alpha. En les permutant circulairement, on peut manipuler la couleur finale de l'écran afin
// que le rouge devienne vert, le bleu soit remplacé par le vert et le vert à la place du rouge.
}

"""

if not 'init' in obj:
cont.activate(filter)
obj['init'] = 1
# Le BGE gardera un filtre 2D actif tant que l'actionneur 2D filtre est actif ; notez
# qu'on ne fait cela que cette fois puisque l'activation du filtre 2D prend un peu de temps, il est
# donc beaucoup plus efficace de l'activer qu'une seule fois plutôt que de le faire constamment.
uniform sampler2D bgl_RenderedTexture;

void main(void)
{
vec4 color = texture2D(bgl_RenderedTexture, gl_TexCoord[0].st);

gl_FragColor = color.gbra;
}


#EOF

Souhaitant progresser en script Python/GL, merci à tous pour les infos sur le sujet.