Mercurial > code > home > repos > light9
diff lightsim/openglsim.py @ 0:45b12307c695
Initial revision
author | drewp |
---|---|
date | Wed, 03 Jul 2002 09:37:57 +0000 |
parents | |
children | f866d4dec57b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lightsim/openglsim.py Wed Jul 03 09:37:57 2002 +0000 @@ -0,0 +1,83 @@ +# see http://www.sgi.com/software/opengl/advanced97/notes/node57.html for accum notes + +import sys +from Image import * +from OpenGL.GL import * +from OpenGL.Tk import * + +class Surface: + def Display(self, event=None): + + glClearColor(0.0, 0.0, 0.0, 0) + glClear( GL_COLOR_BUFFER_BIT |GL_ACCUM_BUFFER_BIT) + + l=glGenLists(1) + glNewList(l,GL_COMPILE) + glEndList() + +# glDrawBuffer(GL_BACK) + + for x in range(1,2): + + 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]) + + 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) + + def SetupWindow(self): + self.OglFrame = Frame() + self.OglFrame.pack(side = 'top',fill='both',expand=1) + self.QuitButton = Button(self.OglFrame, {'text':'Quit'}) + self.QuitButton.bind('<ButtonRelease-1>', sys.exit) + self.QuitButton.pack({'side':'top'}) + + + def SetupOpenGL(self): + self.ogl = Opengl(master=self.OglFrame, width = 270, 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 + + for x in range(0,2): + self.scales[x] = Scale(self.OglFrame,label="s%i"%x,from_=0,to=1,res=.05,orient='horiz',command=self.ogl.tkRedraw) + self.scales[x].pack() + + + def __init__(self): + self.x=0 + self.scales=[None,None] + + self.SetupWindow() + + self.image=[] + for filename in ('pic1.ppm','pic2.ppm'): + im = open(filename) + self.imageWidth = im.size[0] + self.imageHeight = im.size[1] + self.image.append(im.tostring("raw", "RGB", 0, -1)) + print self.imageWidth, self.imageHeight, self.imageWidth * self.imageHeight*4, len(self.image) + + self.SetupOpenGL() + + glDisable(GL_CULL_FACE) + # glEnable(GL_DEPTH_TEST) + # glEnable(GL_NORMALIZE) + glShadeModel(GL_FLAT) + + self.ogl.tkRedraw() + self.ogl.mainloop() + +if __name__ == '__main__': + Surface() + +demo = Surface