Salut les pythons 3D,
Je débute avec OpenGL (pas facile) et j'ai essayer pour commencer de dessiner un QUAD rouge sur fond blanc, c'était déjà difficile pour moi avec l'exemple d'un bouquin sur pygame d'arriver a obtenir le fond blanc ce que j'ai néanmoins réussi en ajoutant du code aussi extrait du livre (faut bien trouver l'info quelque part):

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) #correspond a pygame.display.fill()

dans le code.

Mais je bute sur le dessin du QUAD que je n'arrive pas a faire afficher, stop le bla bla, voici mon code qui ressemble beaucoup au code du livre que vous connaissez peut-être (qui ne marche pas a l'état brute):

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
 
# -*- coding: utf-8 -*-
 
 
from OpenGL.GL import *
from OpenGL.GLU import *
 
import pygame
from pygame.locals import *
 
from sys import exit
 
pygame.init()
screen=pygame.display.set_mode((800,600),HWSURFACE|OPENGL|DOUBLEBUF) #écran pygame
 
glViewport(0,0,800,600) #taille de l'écran
glMatrixMode(GL_PROJECTION) #GL_PROJECTION projection de coordonnées 3D en 2D
glLoadIdentity()
gluPerspective(60.0,800.0/600.0,0.1,600) #definition des paramètres de perspective
glMatrixMode(GL_MODELVIEW) #Mode de la matrice
glLoadIdentity()
glEnable(GL_DEPTH_TEST) #initialise le buffer de l'axe z
 
glClearColor(1.0,1.0,1.0,0.0) #couleur du background
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) #correspond a pygame.Surface.fill()
 
liste=glGenLists(1) #génération d'un index pour la liste
glNewList(liste,GL_COMPILE) #début de la liste
glBegin(GL_QUADS) #définition de l'objet a dessiner
glColor(1.0,0,0,0) #couleur de l'objet: un QUAD
glVertex(100,100,0.1) #coordonnée du point en haut à gauche du QUAD
glVertex(700,100,0.1) #coordonnée du point en haut à droite du QUAD
glVertex(700,700,0.1) #coordonnée du point en bas à droite du QUAD
glVertex(100,700,0.1) #coordonnée du point en bas à gauche du QUAD
glEnd #Fin de la définition de l'objet
glEndList() #fin de la liste
 
while True :
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)  #correspond a pygame.Surface.fill()
  glBegin(GL_QUADS) #définition de l'objet a dessiner
  glColor(1.0,0,0,0) #couleur de l'objet un QUAD
  glVertex(100,100,0.1) #coordonnée du point en haut a gauche du QUAD
  glVertex(700,100,0.1) #coordonnée du point en haut a droite du QUAD
  glVertex(700,700,0.1) #coordonnée du point en bas a droite du QUAD
  glVertex(100,700,0.1) #coordonnée du point en bas a gauche du QUAD
  glEnd #Fin de la définition de l'objet
  #glCallList(liste)  #Avec un appel a la liste ca ne marche pas non plus
  for event in pygame.event.get() :
    if event.type == QUIT :
      exit()
 
  pygame.display.flip()
Si vous savez ou avez une idée du pourquoi du comment le QUAD ne s'affiche pas vous seriez bien sympa de poster, car pour le background blanc il fallait ajouter la ligne mentionner au dessus au bon endroit: pas évident au premier abords avec tous ces paramètres a prendre en compte .
Je suppose que je passe pour un naze de copier minablement le code du book qui ne marche pas mais il faut bien commencer quelque part, merci d'éclairé mon ignorance.