import pygame from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * #definimos la ubicacion de (x, y, z)de cada vertice(punto) verticies = ( (1, -1, -1), #0
(1, 1, -1), #1
(-1, 1, -1), #2
(-1, -1, -1),#3
(1, -1, 1), #4
(1, 1, 1), #5
(-1, -1, 1), #6
(-1, 1, 1) #7 ) #definimos los bordes(tuplas(a,b))el borde se dibujara entre
2 vertices(empezamos con 0 ya que es primer vertice difinido) edges = ( (0, 1),#punto 0 a 1
(0, 3),#punto 0 a 3
(0, 4),#
(2, 1),#
(2, 3),#
(2, 7),#
(6, 3),#
(6, 4),#
(6, 7),#
(5, 1),#
(5, 4),#
(5, 7) # ) #generar un cubo def Cube():#funcion crear cubo glBegin(GL_LINES)#esto notifica a OpenGL que estamos a
#punto de lanzarle un código
#GL_LINES indica como manejar el código, tratara el código como
#dibujo de linea
for edge in edges:#borde por borde (par de vertices) for vertex in edge:#vertice en bordes glVertex3fv(verticies[vertex])#dibujo de lineas (A,B) glEnd()#fin de OpenGL #mostrar cubo def main(): pygame.init()#inicio de pygame display = (800, 600)#mostrar , tamaño(x,y()ancho x alto) pygame.display.set_mode(display, DOUBLEBUF | OPENGL)# #notifica a PyGame que vamos a alimentarlo con código OpenGL
#DOUBLEBUF, que significa doble búfer, y es un tipo de búfer donde hay dos búferes para cumplir con las tasas de actualización del monitor. Tome nota de que pipe ("|") se usa para separar constantes. Se utilizará de nuevo más tarde para separar constantes. gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)
#Determina la perpectiva
#(a,b,c)grado de campo de vision, ancho y altura de visualizacion
#valores(znear, zfar) planos de recorte cercano y lejanos
#el objeto solo sera visible entre estos dos recortes(perspectiva)
#plano de referrencia glTranslatef(0.0, 0.0, -5)#multiplica la matriz actual
#por una matriz de traducción, es para ver el cubo
#bucle de eventos while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glRotatef(1, 3, 1, 1)#multiplica la matriz actual
#por una de rotacion
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
#especificamos que estamos eliminando (lienzo el limpio) Cube()#llama la funcion pygame.display.flip()#actualiza la pantalla pygame.time.wait(10)#espera(tiempo wait) main()#funcion principal
El búfer doble, como se menciona en la descripción de las etiquetas, utiliza un bloque de memoria separado para aplicar todas las rutinas de dibujo y luego copia ese bloque (búfer) a la memoria de video como una sola operación. El no hacer esto puede llevar a artefactos gráficos. Un ejemplo simple podría ser el parpadeo de la escena causada por parte del fondo que se dibuja justo antes de que se actualice el video y luego otras partes (por lo que no se muestran hasta la próxima actualización).
No hay comentarios:
Publicar un comentario