#!/usr/bin/env python # -*- coding: iso-8859-15 -*- # lesson1-starco3Dtutorial: Codigo fuente orientado a objeto de la primera leccion de pyOpenGL. La idea es mostrar las bases de la creacion 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 Hector Munoz Garcia # # Este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los terminos de la Licencia Publica General GNU publicada por la # Fundacion para el Software Libre, ya sea la version 3 de la Licencia, o (a su eleccion) cualquier version posterior. Este programa se distribuye # con la esperanza de que sea util, pero SIN GARANTIA ALGUNA; ni siquiera la garantia implicita MERCANTIL o de APTITUD PARA UN PROPOSITO DETERMINADO. # Consulte los detalles de la Licencia Publica General GNU para obtener una informacion mas detallada. Deberia haber recibido una copia de la Licencia # Publica 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 tercera 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() glTranslatef(-1.5,0.0,-6.0) glBegin(GL_POLYGON) glColor3f(1.0,0.0,0.0) glVertex3f(0.0,1.0,0.0) glColor3f(0.0,1.0,0.0) glVertex3f(1.0,-1.0,0.0) glColor3f(0.0,0.0,1.0) glVertex3f(-1.0,-1.0,0.0) glEnd() glTranslatef(3.0,0.0,0.0) glColor3f(0.3,0.5,1.0) glBegin(GL_QUADS) glVertex3f(-1.0,1.0,0.0) glVertex3f(1.0,1.0,0.0) glVertex3f(1.0,-1.0,0.0) glVertex3f(-1.0,-1.0,0.0) glEnd() glutSwapBuffers() def KeyPressed(self,*args): if args[0]==self.ESCAPE: glutDestroyWindow(self.window) sys.exit() x=Ventana()