gl_cube
This commit is contained in:
		
							parent
							
								
									ac46c9fc41
								
							
						
					
					
						commit
						ce09b70ffe
					
				
					 1 changed files with 110 additions and 0 deletions
				
			
		
							
								
								
									
										110
									
								
								demo/gl_cube.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								demo/gl_cube.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,110 @@ | |||
| from photon import init, InitFlags, video | ||||
| from photon.video import Window | ||||
| from photon.events import EventType, poll_event, WindowEventType | ||||
| import time | ||||
| 
 | ||||
| vertices = [-1.0, -1.0, -1.0, | ||||
|             1.0, -1.0, -1.0, | ||||
|             1.0,  1.0, -1.0, | ||||
|             -1.0, 1.0, -1.0, | ||||
|             -1.0, -1.0,  1.0, | ||||
|             1.0, -1.0,  1.0, | ||||
|             1.0,  1.0,  1.0, | ||||
|             -1.0,  1.0,  1.0] | ||||
| colors = [0.0,  1.0,  0.0,  1.0, | ||||
|           0.0,  1.0,  0.0,  1.0, | ||||
|           1.0,  0.0,  0.0,  1.0, | ||||
|           1.0,  0.0,  0.0,  1.0, | ||||
|           1.0,  0.0,  0.0,  1.0, | ||||
|           1.0,  0.0,  0.0,  1.0, | ||||
|           0.0,  0.0,  1.0,  1.0, | ||||
|           1.0,  0.0,  1.0,  1.0] | ||||
| indices = [0, 4, 5, 0, 5, 1, | ||||
|            1, 5, 6, 1, 6, 2, | ||||
|            2, 6, 7, 2, 7, 3, | ||||
|            3, 7, 4, 3, 4, 0, | ||||
|            4, 7, 6, 4, 6, 5, | ||||
|            3, 0, 1, 3, 1, 2] | ||||
| 
 | ||||
| def main(): | ||||
|     init(InitFlags.EVERYTHING) | ||||
| 
 | ||||
|     window = Window('gl cube demo', 100, 100, 512, 512, | ||||
|                     video.WindowFlags.OPENGL) | ||||
| 
 | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_MULTISAMPLEBUFFERS, 1) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_MULTISAMPLESAMPLES, 4) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_DOUBLEBUFFER, 1) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_DEPTH_SIZE, 24) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_RED_SIZE, 8) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_GREEN_SIZE, 8) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_BLUE_SIZE, 8) | ||||
|     video.gl_set_attribute(video.GL_Attr.SDL_GL_ALPHA_SIZE, 8) | ||||
| 
 | ||||
|     window.gl_context | ||||
|     video.gl_set_swap_interval(1) | ||||
| 
 | ||||
|     from OpenGL.GL import * | ||||
|     from OpenGL.GLU import gluPerspective | ||||
| 
 | ||||
|     # setup gl perspective | ||||
|     glClearDepth(1) | ||||
|     glEnable(GL_DEPTH_TEST) | ||||
|     glDepthFunc(GL_LEQUAL) | ||||
|     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) | ||||
|     glViewport(0, 0, 512, 512) | ||||
|     glMatrixMode(GL_PROJECTION) | ||||
|     glLoadIdentity() | ||||
|     gluPerspective(45, 512/512, 0.1, 100) | ||||
|     glViewport(0, 0, 512, 512) | ||||
|     glMatrixMode(GL_MODELVIEW) | ||||
|     glLoadIdentity() | ||||
| 
 | ||||
|     running = True | ||||
|     start_time = time.time() | ||||
|     frames = 0 | ||||
| 
 | ||||
|     cube_rotation = 0 | ||||
| 
 | ||||
|     while running: | ||||
|         frames += 1 | ||||
|         if frames == 1000: | ||||
|             print('FPS: {0:.2f}'.format(frames/(time.time()-start_time))) | ||||
|             frames = 0 | ||||
|             start_time = time.time() | ||||
| 
 | ||||
|         # event loop | ||||
|         while True: | ||||
|             event = poll_event() | ||||
|             if not event: | ||||
|                 break | ||||
|             elif event.type == EventType.QUIT: | ||||
|                 running = False | ||||
|             elif event.type == EventType.WINDOWEVENT: | ||||
|                 if event.window.event == WindowEventType.CLOSE: | ||||
|                     running = False | ||||
| 
 | ||||
|         # setup state | ||||
|         glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) | ||||
|         glLoadIdentity() | ||||
|         glTranslatef(0, 0, -10) | ||||
|         glRotatef(cube_rotation, 1, 1, 1) | ||||
| 
 | ||||
|         # draw cube | ||||
|         glFrontFace(GL_CW) | ||||
|         glVertexPointer(3, GL_FLOAT, 0, vertices) | ||||
|         glColorPointer(4, GL_FLOAT, 0, colors) | ||||
|         glEnableClientState(GL_VERTEX_ARRAY) | ||||
|         glEnableClientState(GL_COLOR_ARRAY) | ||||
|         glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, indices) | ||||
|         glDisableClientState(GL_VERTEX_ARRAY) | ||||
|         glDisableClientState(GL_COLOR_ARRAY) | ||||
| 
 | ||||
|         glLoadIdentity() | ||||
|         cube_rotation -= 0.15 | ||||
| 
 | ||||
|         window.swap() | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
		Loading…
	
		Reference in a new issue
	
	 James Turk
						James Turk