Nov 22, 2024

Wiki

Python

Aide

edit SideBar

Search

Ouvrir Une Fenetre Version Finale


Voici une nouvelle version de l'ouverture d'une fenêtre graphique, bien plus longue mais bien plus propre que la précédente.

Elle est à retenir.

modules importés

from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import sys

On donne un numéro à notre future fenêtre graphique

window = 0

Une fonction générale d'initialisation OpenGL. On fixe tous les paramètres initiaux

On appelle cette fonction juste après que notre fenetre OpenGL a été créée.

def InitGL(Width, Height):

On fixe la couleur du fond d'écran à noir

    glClearColor(0.0, 0.0, 0.0, 0.0)

On fixe la couleur de buffer de profondeur

    glClearDepth(1.0)

Le type de test de la profondeur à effectuer

    glDepthFunc(GL_LESS)

Actionner le test de profondeur

    glEnable(GL_DEPTH_TEST)

Actionner l'étalement des ombres

    glShadeModel(GL_SMOOTH)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45.0, float(Width)/float(Height), 0.1, 100.0)
    glMatrixMode(GL_MODELVIEW)

La fonction appelée quand la fenêtre OpenGL est redimentionnée (sans effet si l'on met en place l'option plein écran)

def ReSizeGLScene(Width, Height):

Evite la division par 0 si la fenêtre est trop petite

    if Height == 0:
        Height = 1

Remise à zéro de toute transformation de point de vue ou de perspective

    glViewport(0, 0, Width, Height)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45.0, float(Width)/float(Height), 0.1, 100.0)
    glMatrixMode(GL_MODELVIEW)

La fonction principale de dessin

def DrawGLScene():

Efface l'écran et le tampon de profondeur, remet la vue à zéro.

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glLoadIdentity()

Si l'on est en double buffer, échange les buffers pour afficher ce qui vient juste d'être dessiné

    glutSwapBuffers()

La fonction appelée quand une touche esr pressée.

def keyPressed(*args):

    global window

Si on appuie sur Echap, on ferme tout

    if args[0] == 'q':
        sys.exit()

def main():

    global window

On passe les arguments de la ligne de commande à la fonction d'initialisation

    glutInit(sys.argv)

Sélectionne le type d'affichage : Double buffer, couleurs RGBA, composante Alpha supportée, buffer de profondeur

    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)

La fenêtre fera 640 x 480 pixels

    glutInitWindowSize(640, 480)
    glutInitWindowPosition(0, 0)
    glutDisplayFunc(DrawGLScene)

Quand on ne fait rien, redéssiner la scène

    glutIdleFunc(DrawGLScene)

Fixe quelle sera la fonction à appeler quand la fenêtre sera redimentionnée

    glutReshapeFunc(ReSizeGLScene)

Fixe quelle sera la fonction à appeler quand une touche (clavier) sera pressée

    glutKeyboardFunc(keyPressed)

Initialise notre fenêtre

    InitGL(640, 480)

Commence la boucle de gestion des événements

    glutMainLoop()

Affiche un message à la console, et appelle la fonction main()

print "Appuyez sur q pour quitter."

main()

Page Actions

Recent Changes

Group & Page

Back Links