#!/usr/bin/env python # lesson1-starco3Dtutorial: Código fuente orientado a objeto de la primera lección de pyOpenGL. La idea es mostrar las bases de la creación de una # ventana OpenGL en Python. El programa crea todos los contextos necesarios para "hablar" con el GDI pero no dibuja nada en la ventana. # # copyright (C) 2008 Héctor Muñoz García # # Este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la # Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye # con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. # Consulte los detalles de la Licencia Pública General GNU para obtener una información más detallada. Debería haber recibido una copia de la Licencia # Pública General GNU junto a este programa. En caso contrario, consulte . from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import sys class Ventana: # Constructor def __init__(self): self.window=0 self.ESCAPE='\033' glutInit(()) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH) glutInitWindowSize(640,480) glutInitWindowPosition(0,0) self.window=glutCreateWindow("Leccion primera de OpenGL - Starco Tutorials") glutDisplayFunc(self.DrawGLScene) glutIdleFunc(self.DrawGLScene) glutReshapeFunc(self.ResizeGLScene) glutKeyboardFunc(self.KeyPressed) self.InitGL(640,480) glutMainLoop() # Metodos def InitGL(self,Width,Height): glClearColor(0.0,0.0,0.0,0.0) glClearDepth(1.0) glDepthFunc(GL_LESS) glEnable(GL_DEPTH_TEST) glShadeModel(GL_SMOOTH) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(45.0,float(Width)/float(Height),0.1,100.0) glMatrixMode(GL_MODELVIEW) def ResizeGLScene(self,Width,Height): if Height==0: Height=1 glViewport(0,0,Width,Height) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(45.0,float(Width)/float(Height),0.1,100.0) glMatrixMode(GL_MODELVIEW) def DrawGLScene(self): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity() glutSwapBuffers() def KeyPressed(self,*args): if args[0]==self.ESCAPE: glutDestroyWindow(self.window) sys.exit() x=Ventana()