def __init__(self): appuifw.app.exit_key_handler=self.set_exit appuifw.app.screen = 'full' self.canvas=glcanvas.GLCanvas(redraw_callback=self.redraw, event_callback=None, resize_callback=self.resize) appuifw.app.body=self.canvas self.initgl() while self.running: self.canvas.drawNow() e32.ao_sleep(0.0001)
def main(): appuifw.app.exit_key_handler = set_exit appuifw.app.screen = 'full' canvas = glcanvas.GLCanvas(redraw_callback=display, event_callback=keys, resize_callback=reshape) appuifw.app.body = canvas myinit() while running: canvas.drawNow() e32.ao_sleep(1)
def main(): appuifw.app.exit_key_handler = exit appuifw.app.screen = 'full' canvas = glcanvas.GLCanvas(redraw_callback=display, event_callback=keysEvent, resize_callback=reshape) appuifw.app.body = canvas myinit() while running: #主循环 pass
def main(): appuifw.app.exit_key_handler = set_exit appuifw.app.screen = 'full' #定义界面 canvas = glcanvas.GLCanvas(redraw_callback=display, event_callback=keys, resize_callback=reshape) appuifw.app.body = canvas #调用初始化 myinit() #开始绘制 while running: canvas.drawNow() e32.ao_yield()
def initgraphics(self): """initgraphics(self)->None initialises graphic part of the engine""" appuifw.app.title = u('3D Tetris') appuifw.app.body = self.canvas = glcanvas.GLCanvas( redraw_callback=self.redraw) appuifw.app.exit_key_handler = self.set_exit glClearColor(0.0, 0.0, 0.0, 0.0) glClearDepthf(self.maxz + 1.0) self.screensize = self.canvas.size #self.screenmin=min(self.screensize) self.screendif = self.screensize[1] - self.screensize[ 0] # >0 if vertical screen self.screenaspect = float(self.screensize[1]) / float( self.screensize[0]) self.resetcam() glMatrixMode(GL_MODELVIEW) glLoadIdentity() glVertexPointerb(self.points) glColorPointerub(self.colors) glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_COLOR_ARRAY) glLineWidth(2.0) glShadeModel(GL_FLAT) glEnable(GL_CULL_FACE) glEnable(GL_DEPTH_TEST) glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) # to make transparency, rtfm opengl es specs! glViewport(0, 0, *self.screensize) l0=[ (self.xyz2ind(self.minx,y, z),self.xyz2ind(self.maxx,y, z)) for z in self.rz for y in self.ry \ if (y==self.miny)or(y==self.maxy)or(z==self.maxz)] # lines parallel to OX l1=[ (self.xyz2ind(x,self.miny, z),self.xyz2ind(x,self.maxy, z)) for z in self.rz for x in self.rx \ if (x==self.minx)or(x==self.maxx)or(z==self.maxz)] # lines parallel to OY l2=[ (self.xyz2ind(x,y,self.minz),self.xyz2ind(x,y,self.maxz)) for y in self.ry for x in self.rx \ if (x==self.minx)or(x==self.maxx)or(y==self.miny)or(y==self.maxy)] # to OZ #l0=[ (self.xyz2ind(self.minx,y, z),self.xyz2ind(self.maxx,y, z)) for z in self.rz for y in self.ry \ # if ((y==self.miny)or(y==self.maxy))and(z==self.maxz)] # lines parallel to OX #l1=[ (self.xyz2ind(x,self.miny, z),self.xyz2ind(x,self.maxy, z)) for z in self.rz for x in self.rx \ # if ((x==self.minx)or(x==self.maxx))and(z==self.maxz)] # lines parallel to OY #l2=[ (self.xyz2ind(x,y,self.minz),self.xyz2ind(x,y,self.maxz)) for y in self.ry for x in self.rx \ # if ((x==self.minx)or(x==self.maxx))and((y==self.miny)or(y==self.maxy))] # to OZ self.lines = array(GL_UNSIGNED_SHORT, 2, l0 + l1 + l2)
elif turning_axis == 3: glRotatex(iFrame << 16, 0, 0, 1 << 16) drawbox(15.0, 15.0, 15.0) def set_exit(): global running, canvas canvas = None running = 0 def keys(event): global turning_axis if event['keycode'] == key_codes.EKeyDownArrow: turning_axis = 1 elif event['keycode'] == key_codes.EKeyRightArrow: turning_axis = 2 elif event['keycode'] == key_codes.EKeyLeftArrow: turning_axis = 3 elif event['keycode'] == key_codes.EKeyUpArrow: turning_axis = 0 appuifw.app.exit_key_handler = set_exit appuifw.app.screen = 'normal' canvas = glcanvas.GLCanvas(redraw_callback=redraw, event_callback=keys, resize_callback=resize) appuifw.app.body = canvas initgl() while running: canvas.drawNow() e32.ao_sleep(0.0001)