# HG changeset patch # User drewp@bigasterisk.com # Date 1180462815 0 # Node ID f866d4dec57b2e6eb154fcf0934bb10cb946c010 # Parent 88352cff403d5fc563b9818dbb07f8c523b30522 openglsim now mixes images diff -r 88352cff403d -r f866d4dec57b lightsim/openglsim.py --- a/lightsim/openglsim.py Sun Jun 18 22:20:10 2006 +0000 +++ b/lightsim/openglsim.py Tue May 29 18:20:15 2007 +0000 @@ -1,38 +1,56 @@ # see http://www.sgi.com/software/opengl/advanced97/notes/node57.html for accum notes -import sys -from Image import * +import sys, time +import numpy as num from OpenGL.GL import * from OpenGL.Tk import * +import Image + +def drawWithAlpha(imgString, w, h, alpha): + """without opengl extensions""" + t = time.time() + ar = num.reshape(num.fromstring(imgString, dtype='uint8'), + (w * h, 4)) + print " tonum", time.time() - t + ar[:,3] *= alpha + + print " scl", time.time() - t + glDrawPixels(w, h, + GL_RGBA, GL_UNSIGNED_BYTE, ar.tostring()) + print " draw", time.time() - t + class Surface: def Display(self, event=None): - + assert 'GL_ARB_imaging' in glGetString(GL_EXTENSIONS).split() + glClearColor(0.0, 0.0, 0.0, 0) glClear( GL_COLOR_BUFFER_BIT |GL_ACCUM_BUFFER_BIT) - + glEnable(GL_BLEND) + #glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) + glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA) l=glGenLists(1) glNewList(l,GL_COMPILE) glEndList() # glDrawBuffer(GL_BACK) - for x in range(1,2): - + for x, img in enumerate(self.image): mag = self.scales[x].get() print "pic %i at %f" % (x,mag) - glClear(GL_COLOR_BUFFER_BIT) - glDrawPixels(self.imageWidth, self.imageHeight, GL_RGB, GL_UNSIGNED_BYTE, self.image[x]) +# glClear(GL_COLOR_BUFFER_BIT) + #glBlendColor(1, 1, 1, mag) # needs ARB_imaging + drawWithAlpha(img, self.imageWidth, self.imageHeight, mag) + - if x==0: - glAccum(GL_LOAD,mag) - else: - glAccum(GL_ACCUM,mag) +## if x==0: +## glAccum(GL_LOAD,mag) +## else: +## glAccum(GL_ACCUM,mag) # glAccum(GL_ADD,self.x) self.x=(self.x+.1)%2.0 - print "return" - glAccum(GL_RETURN,1) +## glAccum(GL_RETURN,1) def SetupWindow(self): self.OglFrame = Frame() @@ -43,7 +61,7 @@ def SetupOpenGL(self): - self.ogl = Opengl(master=self.OglFrame, width = 270, height = 270, double = 1, depth = 0) + self.ogl = Opengl(master=self.OglFrame, width = 512, height = 270, double = 1, depth = 0) self.ogl.pack(side = 'top', expand = 1, fill = 'both') self.ogl.set_centerpoint(0, 0, 0) self.ogl.redraw = self.Display @@ -60,11 +78,12 @@ self.SetupWindow() self.image=[] - for filename in ('pic1.ppm','pic2.ppm'): - im = open(filename) + for filename in ('skyline/bg.png', 'skyline/cyc-lo-red.png'): + im = Image.open(filename) + im.thumbnail((200, 200)) self.imageWidth = im.size[0] self.imageHeight = im.size[1] - self.image.append(im.tostring("raw", "RGB", 0, -1)) + self.image.append(im.convert("RGBA").tostring())#"raw", "RGB", 0, -1)) print self.imageWidth, self.imageHeight, self.imageWidth * self.imageHeight*4, len(self.image) self.SetupOpenGL() diff -r 88352cff403d -r f866d4dec57b lightsim/sim2 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lightsim/sim2 Tue May 29 18:20:15 2007 +0000 @@ -0,0 +1,123 @@ +#!/usr/bin/python2.4 +from __future__ import division +import sys, time, math +import Image, ImageFilter +import Numeric as num +from OpenGL import GL, GLUT, GLU +from OpenGL.GL import * + +def openglSetup(width=512, height=256): + global cardList + + glClearColor (0.0, 0.0, 0.0, 0.0) + glShadeModel (GL_SMOOTH) + glEnable(GL_COLOR_MATERIAL) + + glLightfv(GL_LIGHT0, GL_AMBIENT, [0.0, 0.0, 0.0, 1.0]) + glLightfv(GL_LIGHT0, GL_DIFFUSE, [1.0, 1.0, 1.0, 1.0]) + glLightfv(GL_LIGHT0, GL_POSITION, [0.0, 3.0, 3.0, 0.0]) + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, [0.2, 0.2, 0.2, 1.0]) + glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, [0]) + + #glFrontFace(GL_CW) + glEnable(GL_LIGHTING) + glEnable(GL_LIGHT0) + #glEnable(GL_AUTO_NORMAL) + #glEnable(GL_NORMALIZE) + glEnable(GL_DEPTH_TEST) + + + glViewport (0, 0, width, height) + glMatrixMode (GL_PROJECTION) + glLoadIdentity () + glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0) + glMatrixMode (GL_MODELVIEW) + + cardList = glGenLists(1) + glNewList(cardList, GL_COMPILE) + glColor3f(1,1,1) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 0.0, 1.0) + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 0.0, 1.0) + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0) + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0) + glEnd() + glEndList() + + + +def imageCard(img): + """card facing +Z from -1