import sys, time, math, os, random import Image from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from dmsgl import * from CompressedTexture2D import * startDir = os.getcwd() class Square: def __init__(self, width=1.0, height=1.0, xpos=0.0, ypos=0.0, color=[1,1,1], texture=None): self.width = width self.height = height self.xpos = xpos self.ypos = ypos self.color = color self.texture = texture def draw(self): glColor3fv(self.color) if self.texture: self.texture.apply() glPushMatrix() glTranslatef(self.xpos, self.ypos, 0) glBegin(GL_QUADS) glTexCoord2f(0,0) glVertex2f(-self.width/2.0, -self.height/2.0) glTexCoord2f(1,0) glVertex2f(self.width/2.0, -self.height/2.0) glTexCoord2f(1,1) glVertex2f(self.width/2.0, self.height/2.0) glTexCoord2f(0,1) glVertex2f(-self.width/2.0, self.height/2.0) glEnd() glPopMatrix() if self.texture: self.texture.disable() def createObjects(textureFile): global square square = Square(2, 2, texture=CompressedTexture2D(textureFile)) # square = Square(2, 2, texture=Texture2D(textureFile)) square.texture.apply() compressed = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_ARB) print "Compressed: ", compressed if compressed: width = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH) height = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT) internalFormat = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT) compressedSize = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB) print "size = ", compressedSize, " format = ", internalFormat # imgdata = glGetCompressedTexImageARB(GL_TEXTURE_2D, 0) # open('texture.ctex','wb').write(imgdata) def draw(): glClearColor(0, 0.3, 0.5, 0) glClear(GL_COLOR_BUFFER_BIT) square.draw() glutSwapBuffers() def keyboard(key, x, y): if key == chr(27): sys.exit(0) def specialkey(key,x,y): pass def update(dummy): glutTimerFunc(16, update, 0) glutPostRedisplay() glutInit([]) glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE) glutInitWindowSize(600,600) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glutSpecialFunc(specialkey) glutTimerFunc(1, update, 0) os.chdir(startDir) if len(sys.argv) > 1: createObjects(sys.argv[1]) else: createObjects("texture.tiff") glutMainLoop()