def run(self): # To start the animation, we call the timer once; all subsequent timer # calls will be scheduled by the timer function itself. self.timer() # The default program is bound by using a <code>with</code> statement: with self.shader: # With the shader bound, we enter the GLUT main loop. main_loop()
def run(self): # To start the animation, we call the timer once; all subsequent timer # calls will be scheduled by the timer function itself. self.timer() # The default program is bound by using a <code>with</code> statement. At # the same time, we can pass in additional uniform variables, such as the # modelview matrix: with self.shader(modelview_matrix=((1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 2))): # With the shader bound, we enter the GLUT main loop. main_loop()
def run(self): # To start the animation, we call the timer once; all subsequent timer # calls will be scheduled by the timer function itself. self.timer() # Now that all the initialization is done, we add the default logger to # all OpenGL commands so that we can see what OpenGL the display # function issues, and in which order. add_logger() # Finally, to start rendering, we enter the GLUT main loop. main_loop()
def run(self): # To start the animation, we call the timer once; all subsequent timer # calls will be scheduled by the timer function itself. self.timer() # The shader program is bound by using a <code>with</code> statement: with self.shader: # The <code>State</code> class encapsulates state changes in the # context. For example, to enable depth testing for the duration of the # following function call, we would write: with State(depth_test=True): # With the shader bound and depth testing enabled, we enter the # GLUT main loop. main_loop()
# clear the screen window.clear(color=True, depth=True) # display the backbuffer window.swap_buffers() def keyboard(key, x, y): # if F1 or ALT-Enter is pressed, toggle fullscreen # TODO: key constants like GLUT_KEY_F1 should be available as an enum if key == _gl.GLUT_KEY_F1 or (get_alt_state() and key == ord('\r')): window.toggle_full_screen() elif key == 27: # escape key raise SystemExit # makes program quit out of main_loop if __name__ == "__main__": # create main window window = GlutWindow(name="NeHe's OpenGL Framework", double=True) # set background color to black # TODO: it would be nice if window.color_clear_value = (0, 0, 0) would # implicitly set alpha to 1 window.color_clear_value = (0, 0, 0, 1) # callback for rendering window.display_callback = display # callback for normal keys and special keys (like F1), both handled by same function here window.keyboard_callback = window.special_callback = keyboard # render all the time window.idle_callback = window.post_redisplay # loops until SystemExit is raised or window is closed main_loop()
def run(self): main_loop()
def run(self): with self.shader: main_loop()
def run(self): self.timer() with self.shader: with State(depth_test=True): main_loop()
def run(self): self.timer() main_loop()
def display(): # clear the screen window.clear(color=True, depth=True) # display the backbuffer window.swap_buffers() def keyboard(key, x, y): # if F1 or ALT-Enter is pressed, toggle fullscreen # TODO: key constants like GLUT_KEY_F1 should be available as an enum if key == _gl.GLUT_KEY_F1 or (get_alt_state() and key == ord('\r')): window.toggle_full_screen() elif key == 27: # escape key raise SystemExit # makes program quit out of main_loop if __name__ == "__main__": # create main window window = GlutWindow(name="NeHe's OpenGL Framework", double=True) # set background color to black # TODO: it would be nice if window.color_clear_value = (0, 0, 0) would # implicitly set alpha to 1 window.color_clear_value = (0, 0, 0, 1) # callback for rendering window.display_callback = display # callback for normal keys and special keys (like F1), both handled by same function here window.keyboard_callback = window.special_callback = keyboard # render all the time window.idle_callback = window.post_redisplay # loops until SystemExit is raised or window is closed main_loop()