def main(): moons = [Moon(pos) for pos in d12_input] glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) glutInitWindowSize(800, 800) glutInitWindowPosition(350, 200) glutCreateWindow('name') glClearColor(0., 0., 0., 1.) glShadeModel(GL_SMOOTH) glEnable(GL_CULL_FACE) glEnable(GL_DEPTH_TEST) glEnable(GL_LIGHTING) lightZeroPosition = [10., 4., 10., 1.] lightZeroColor = [0.8, 1.0, 0.8, 1.0] glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition) glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1) glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05) glEnable(GL_LIGHT0) glutDisplayFunc(lambda: display_scene(moons)) glutTimerFunc(0, timer, 0) glMatrixMode(GL_PROJECTION) gluPerspective(40., 1., 1., 40.) glMatrixMode(GL_MODELVIEW) gluLookAt(0, -10, 10, 0, 0, 0, 0, 1, 0) glPushMatrix() glutMainLoop()
def light(cls, light: Capability, light_parameter: LightParameter, value): if isinstance(value, Iterable): glLightfv(light.value, light_parameter.value, value) else: glLightf(light.value, light_parameter.value, value)
def setup_standard_lights(lights, glprefs=None): """ Set up lighting in the current GL context using the supplied "lights" tuple (in the format used by GLPane's prefs) and the optional glprefs object (which defaults to drawing_globals.glprefs ). Note: the glprefs data used can be summarized by the related function glprefs_data_used_by_setup_standard_lights (which see). Warning: has side effects on GL_MODELVIEW matrix. Note: If GL_NORMALIZE needs to be enabled, callers should do that themselves, since this depends on what they will draw and might slow down drawing. """ #e not sure whether projection matrix also needs to be reset here # [bruce 051212] glMatrixMode(GL_MODELVIEW) glLoadIdentity() if glprefs is None: glprefs = drawing_globals.glprefs # note: whatever glprefs data is used below must also be present # in the return value of glprefs_data_used_by_setup_standard_lights(). # [bruce 051212] try: # new code (((r0,g0,b0),a0,d0,s0,x0,y0,z0,e0), \ ( (r1,g1,b1),a1,d1,s1,x1,y1,z1,e1), \ ( (r2,g2,b2),a2,d2,s2,x2,y2,z2,e2)) = lights # Great place for a print statement for debugging lights. Keep this. # Mark 051204. [revised by bruce 051212] #print "-------------------------------------------------------------" #print "setup_standard_lights: lights[0]=", lights[0] #print "setup_standard_lights: lights[1]=", lights[1] #print "setup_standard_lights: lights[2]=", lights[2] glLightfv(GL_LIGHT0, GL_POSITION, (x0, y0, z0, 0)) glLightfv(GL_LIGHT0, GL_AMBIENT, (r0 * a0, g0 * a0, b0 * a0, 1.0)) glLightfv(GL_LIGHT0, GL_DIFFUSE, (r0 * d0, g0 * d0, b0 * d0, 1.0)) if glprefs.override_light_specular is not None: glLightfv(GL_LIGHT0, GL_SPECULAR, glprefs.override_light_specular) else: # grantham 20051121 - this should be a component on its own # not replicating the diffuse color. # Added specular (s0) as its own component. mark 051202. glLightfv(GL_LIGHT0, GL_SPECULAR, (r0 * s0, g0 * s0, b0 * s0, 1.0)) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT1, GL_POSITION, (x1, y1, z1, 0)) glLightfv(GL_LIGHT1, GL_AMBIENT, (r1 * a1, g1 * a1, b1 * a1, 1.0)) glLightfv(GL_LIGHT1, GL_DIFFUSE, (r1 * d1, g1 * d1, b1 * d1, 1.0)) if glprefs.override_light_specular is not None: glLightfv(GL_LIGHT1, GL_SPECULAR, glprefs.override_light_specular) else: glLightfv(GL_LIGHT1, GL_SPECULAR, (r1 * s1, g1 * s1, b1 * s1, 1.0)) glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT2, GL_POSITION, (x2, y2, z2, 0)) glLightfv(GL_LIGHT2, GL_AMBIENT, (r2 * a2, g2 * a2, b2 * a2, 1.0)) glLightfv(GL_LIGHT2, GL_DIFFUSE, (r2 * d2, g2 * d2, b2 * d2, 1.0)) if glprefs.override_light_specular is not None: glLightfv(GL_LIGHT2, GL_SPECULAR, glprefs.override_light_specular) else: glLightfv(GL_LIGHT2, GL_SPECULAR, (r2 * s2, g2 * s2, b2 * s2, 1.0)) glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0) glEnable(GL_LIGHTING) if e0: glEnable(GL_LIGHT0) else: glDisable(GL_LIGHT0) if e1: glEnable(GL_LIGHT1) else: glDisable(GL_LIGHT1) if e2: glEnable(GL_LIGHT2) else: glDisable(GL_LIGHT2) except: debug.print_compact_traceback( "bug (worked around): setup_standard_lights reverting to old code." ) # old code, used only to set up some sort of workable lighting in case # of bugs (this is not necessarily using the same values as # _default_lights; doesn't matter since never used unless there are # bugs) glLightfv(GL_LIGHT0, GL_POSITION, (-50, 70, 30, 0)) glLightfv(GL_LIGHT0, GL_AMBIENT, (0.3, 0.3, 0.3, 1.0)) glLightfv(GL_LIGHT0, GL_DIFFUSE, (0.8, 0.8, 0.8, 1.0)) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT1, GL_POSITION, (-20, 20, 20, 0)) glLightfv(GL_LIGHT1, GL_AMBIENT, (0.4, 0.4, 0.4, 1.0)) glLightfv(GL_LIGHT1, GL_DIFFUSE, (0.4, 0.4, 0.4, 1.0)) glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT2, GL_POSITION, (0, 0, 100, 0)) glLightfv(GL_LIGHT2, GL_AMBIENT, (1.0, 1.0, 1.0, 1.0)) glLightfv(GL_LIGHT2, GL_DIFFUSE, (1.0, 1.0, 1.0, 1.0)) glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0) glEnable(GL_LIGHTING) glEnable(GL_LIGHT0) glEnable(GL_LIGHT1) glDisable(GL_LIGHT2) return # from setup_standard_lights
def setup_standard_lights( lights, glprefs): """ Set up lighting in the current GL context using the supplied "lights" tuple (in the format used by GLPane's prefs) and the required glprefs object (of class GLPrefs). @note: the glprefs data used can be summarized by the related function glprefs_data_used_by_setup_standard_lights (which see). @warning: has side effects on GL_MODELVIEW matrix. @note: If GL_NORMALIZE needs to be enabled, callers should do that themselves, since this depends on what they will draw and might slow down drawing. """ assert glprefs is not None # note: whatever glprefs data is used below must also be present # in the return value of glprefs_data_used_by_setup_standard_lights(). # [bruce 051212] #e not sure whether projection matrix also needs to be reset here # [bruce 051212] glMatrixMode(GL_MODELVIEW) glLoadIdentity() try: # new code (((r0,g0,b0),a0,d0,s0,x0,y0,z0,e0), \ ( (r1,g1,b1),a1,d1,s1,x1,y1,z1,e1), \ ( (r2,g2,b2),a2,d2,s2,x2,y2,z2,e2)) = lights # Great place for a print statement for debugging lights. Keep this. # Mark 051204. [revised by bruce 051212] #print "-------------------------------------------------------------" #print "setup_standard_lights: lights[0]=", lights[0] #print "setup_standard_lights: lights[1]=", lights[1] #print "setup_standard_lights: lights[2]=", lights[2] glLightfv(GL_LIGHT0, GL_POSITION, (x0, y0, z0, 0)) glLightfv(GL_LIGHT0, GL_AMBIENT, (r0*a0, g0*a0, b0*a0, 1.0)) glLightfv(GL_LIGHT0, GL_DIFFUSE, (r0*d0, g0*d0, b0*d0, 1.0)) if glprefs.override_light_specular is not None: glLightfv(GL_LIGHT0, GL_SPECULAR, glprefs.override_light_specular) else: # grantham 20051121 - this should be a component on its own # not replicating the diffuse color. # Added specular (s0) as its own component. mark 051202. glLightfv(GL_LIGHT0, GL_SPECULAR, (r0*s0, g0*s0, b0*s0, 1.0)) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT1, GL_POSITION, (x1, y1, z1, 0)) glLightfv(GL_LIGHT1, GL_AMBIENT, (r1*a1, g1*a1, b1*a1, 1.0)) glLightfv(GL_LIGHT1, GL_DIFFUSE, (r1*d1, g1*d1, b1*d1, 1.0)) if glprefs.override_light_specular is not None: glLightfv(GL_LIGHT1, GL_SPECULAR, glprefs.override_light_specular) else: glLightfv(GL_LIGHT1, GL_SPECULAR, (r1*s1, g1*s1, b1*s1, 1.0)) glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT2, GL_POSITION, (x2, y2, z2, 0)) glLightfv(GL_LIGHT2, GL_AMBIENT, (r2*a2, g2*a2, b2*a2, 1.0)) glLightfv(GL_LIGHT2, GL_DIFFUSE, (r2*d2, g2*d2, b2*d2, 1.0)) if glprefs.override_light_specular is not None: glLightfv(GL_LIGHT2, GL_SPECULAR, glprefs.override_light_specular) else: glLightfv(GL_LIGHT2, GL_SPECULAR, (r2*s2, g2*s2, b2*s2, 1.0)) glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0) glEnable(GL_LIGHTING) if e0: glEnable(GL_LIGHT0) else: glDisable(GL_LIGHT0) if e1: glEnable(GL_LIGHT1) else: glDisable(GL_LIGHT1) if e2: glEnable(GL_LIGHT2) else: glDisable(GL_LIGHT2) except: print_compact_traceback( "bug (worked around): setup_standard_lights reverting to old code.") # old code, used only to set up some sort of workable lighting in case # of bugs (this is not necessarily using the same values as # _default_lights; doesn't matter since never used unless there are # bugs) glLightfv(GL_LIGHT0, GL_POSITION, (-50, 70, 30, 0)) glLightfv(GL_LIGHT0, GL_AMBIENT, (0.3, 0.3, 0.3, 1.0)) glLightfv(GL_LIGHT0, GL_DIFFUSE, (0.8, 0.8, 0.8, 1.0)) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT1, GL_POSITION, (-20, 20, 20, 0)) glLightfv(GL_LIGHT1, GL_AMBIENT, (0.4, 0.4, 0.4, 1.0)) glLightfv(GL_LIGHT1, GL_DIFFUSE, (0.4, 0.4, 0.4, 1.0)) glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0) glLightfv(GL_LIGHT2, GL_POSITION, (0, 0, 100, 0)) glLightfv(GL_LIGHT2, GL_AMBIENT, (1.0, 1.0, 1.0, 1.0)) glLightfv(GL_LIGHT2, GL_DIFFUSE, (1.0, 1.0, 1.0, 1.0)) glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0) glEnable(GL_LIGHTING) glEnable(GL_LIGHT0) glEnable(GL_LIGHT1) glDisable(GL_LIGHT2) return # from setup_standard_lights
def __init__(self): print(str(bool(glutInit))) print("hello and weolcome") print( "if you see an error next try the unofficial binaries of pyopengl") print("initializing glut etc") glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH) glutInitWindowSize(640, 480) glutCreateWindow(name) print("set blend function") glBlendFunc(GL_SRC_ALPHA, GL_ONE) print("set colours and lights") glClearColor(0., 0., 0., 1.) glShadeModel(GL_SMOOTH) glEnable(GL_CULL_FACE) glEnable(GL_DEPTH_TEST) glEnable(GL_LIGHTING) print("set light 1") lightZeroPosition = [10., 4., 10., 1.] lightZeroColor = [0.9, 1.0, 0.9, 1.0] #green tinged glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition) glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.2) glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05) glEnable(GL_LIGHT0) print("set light 2") lightZeroPosition2 = [-10., -4., 10., 1.] lightZeroColor2 = [1.0, 0.9, 0.9, 1.0] #green tinged glLightfv(GL_LIGHT1, GL_POSITION, lightZeroPosition2) glLightfv(GL_LIGHT1, GL_DIFFUSE, lightZeroColor2) glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.2) glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.05) glEnable(GL_LIGHT1) #initialization of letters print("initialzing letters") self.letters = Letters.Letters() #for game models print("making model lists") MakeLists() print("ignore key repeat") glutIgnoreKeyRepeat(1) print("attach glut events to functions") glutSpecialFunc(self.keydownevent) glutSpecialUpFunc(self.keyupevent) glutReshapeFunc(self.reshape) glutKeyboardFunc(self.keydownevent) glutKeyboardUpFunc(self.keyupevent) glutDisplayFunc(self.display) #glutIdleFunc(self.display) print("initial projection") glMatrixMode(GL_PROJECTION) gluPerspective(60.0, 640.0 / 480., 1., 50.) glMatrixMode(GL_MODELVIEW) glPushMatrix() print("generating level") self.level = generateLevel(0) print("keys set up") self.initkey("zxdcfvqaopm") self.animate() print("about to loop...") glutMainLoop() return