annotate lightsim/openglsim.py @ 81:70bd142d72c2

added a SerialPot io object and made the IO code much more elegant (in io.py)
author drewp
date Fri, 12 Jul 2002 10:42:24 +0000
parents 45b12307c695
children f866d4dec57b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 # see http://www.sgi.com/software/opengl/advanced97/notes/node57.html for accum notes
45b12307c695 Initial revision
drewp
parents:
diff changeset
2
45b12307c695 Initial revision
drewp
parents:
diff changeset
3 import sys
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 from Image import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 from OpenGL.GL import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 from OpenGL.Tk import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
7
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 class Surface:
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 def Display(self, event=None):
45b12307c695 Initial revision
drewp
parents:
diff changeset
10
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 glClearColor(0.0, 0.0, 0.0, 0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 glClear( GL_COLOR_BUFFER_BIT |GL_ACCUM_BUFFER_BIT)
45b12307c695 Initial revision
drewp
parents:
diff changeset
13
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 l=glGenLists(1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
15 glNewList(l,GL_COMPILE)
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 glEndList()
45b12307c695 Initial revision
drewp
parents:
diff changeset
17
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 # glDrawBuffer(GL_BACK)
45b12307c695 Initial revision
drewp
parents:
diff changeset
19
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 for x in range(1,2):
45b12307c695 Initial revision
drewp
parents:
diff changeset
21
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 mag = self.scales[x].get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 print "pic %i at %f" % (x,mag)
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 glClear(GL_COLOR_BUFFER_BIT)
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 glDrawPixels(self.imageWidth, self.imageHeight, GL_RGB, GL_UNSIGNED_BYTE, self.image[x])
45b12307c695 Initial revision
drewp
parents:
diff changeset
26
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 if x==0:
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 glAccum(GL_LOAD,mag)
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 glAccum(GL_ACCUM,mag)
45b12307c695 Initial revision
drewp
parents:
diff changeset
31
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 # glAccum(GL_ADD,self.x)
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 self.x=(self.x+.1)%2.0
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 print "return"
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 glAccum(GL_RETURN,1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
36
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 def SetupWindow(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 self.OglFrame = Frame()
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 self.OglFrame.pack(side = 'top',fill='both',expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 self.QuitButton = Button(self.OglFrame, {'text':'Quit'})
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 self.QuitButton.bind('<ButtonRelease-1>', sys.exit)
45b12307c695 Initial revision
drewp
parents:
diff changeset
42 self.QuitButton.pack({'side':'top'})
45b12307c695 Initial revision
drewp
parents:
diff changeset
43
45b12307c695 Initial revision
drewp
parents:
diff changeset
44
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 def SetupOpenGL(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 self.ogl = Opengl(master=self.OglFrame, width = 270, height = 270, double = 1, depth = 0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 self.ogl.pack(side = 'top', expand = 1, fill = 'both')
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 self.ogl.set_centerpoint(0, 0, 0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 self.ogl.redraw = self.Display
45b12307c695 Initial revision
drewp
parents:
diff changeset
50
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 for x in range(0,2):
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 self.scales[x] = Scale(self.OglFrame,label="s%i"%x,from_=0,to=1,res=.05,orient='horiz',command=self.ogl.tkRedraw)
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 self.scales[x].pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
54
45b12307c695 Initial revision
drewp
parents:
diff changeset
55
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 def __init__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 self.x=0
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 self.scales=[None,None]
45b12307c695 Initial revision
drewp
parents:
diff changeset
59
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 self.SetupWindow()
45b12307c695 Initial revision
drewp
parents:
diff changeset
61
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 self.image=[]
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 for filename in ('pic1.ppm','pic2.ppm'):
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 im = open(filename)
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 self.imageWidth = im.size[0]
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 self.imageHeight = im.size[1]
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 self.image.append(im.tostring("raw", "RGB", 0, -1))
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 print self.imageWidth, self.imageHeight, self.imageWidth * self.imageHeight*4, len(self.image)
45b12307c695 Initial revision
drewp
parents:
diff changeset
69
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 self.SetupOpenGL()
45b12307c695 Initial revision
drewp
parents:
diff changeset
71
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 glDisable(GL_CULL_FACE)
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 # glEnable(GL_DEPTH_TEST)
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 # glEnable(GL_NORMALIZE)
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 glShadeModel(GL_FLAT)
45b12307c695 Initial revision
drewp
parents:
diff changeset
76
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 self.ogl.tkRedraw()
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 self.ogl.mainloop()
45b12307c695 Initial revision
drewp
parents:
diff changeset
79
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 if __name__ == '__main__':
45b12307c695 Initial revision
drewp
parents:
diff changeset
81 Surface()
45b12307c695 Initial revision
drewp
parents:
diff changeset
82
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 demo = Surface