gl_cube
This commit is contained in:
parent
ac46c9fc41
commit
ce09b70ffe
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 New Issue
Block a user