-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path5-1
More file actions
98 lines (81 loc) · 2.34 KB
/
5-1
File metadata and controls
98 lines (81 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import glfw
from OpenGL.GL import *
import numpy as np
from OpenGL.GLU import *
gCamAng=0
gCamHeight=1.
def createVertexAndIndexArrayIndexed():
varr=np.array([
(0, 0, 0), #v0
(1.5, 0, 0), #v1
(0, 1.5, 0), #v2
(0, 0, 1.5), #v3
], 'float32')
iarr=np.array([
(0,1,2),
(0,3,1),
(0,3,2),
(3,1,2),
])
return varr, iarr
def key_callback(window, key, scancode, action, mods):
global gCamAng, gCamHeight
if action==glfw.PRESS or action==glfw.REPEAT:
if key==glfw.KEY_1:
gCamAng += np.radians(-10)
elif key==glfw.KEY_3:
gCamAng += np.radians(10)
elif key==glfw.KEY_2:
gCamHeight += .1
elif key==glfw.KEY_W:
gCamHeight += -.1
def render():
global gCamAng, gCamHeight
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glEnable(GL_DEPTH_TEST)
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE )
glLoadIdentity()
gluPerspective(45, 1, 1, 10)
gluLookAt(5*np.sin(gCamAng),gCamHeight,5*np.cos(gCamAng), 0,0,0, 0,1,0)
drawFrame()
glColor3ub(255, 255, 255)
drawCube_glDrawElements()
def drawCube_glDrawElements():
global gVertexArrayIndexed, gIndexArray
varr = gVertexArrayIndexed
iarr = gIndexArray
glEnableClientState(GL_VERTEX_ARRAY)
glVertexPointer(3, GL_FLOAT, 3*varr.itemsize, varr)
glDrawElements(GL_TRIANGLES, iarr.size, GL_UNSIGNED_INT, iarr)
gVertexArrayIndexed = None
gIndexArray = None
def drawFrame():
glBegin(GL_LINES)
glColor3ub(255, 0, 0)
glVertex3fv(np.array([0.,0.,0.]))
glVertex3fv(np.array([1.,0.,0.]))
glColor3ub(0, 255, 0)
glVertex3fv(np.array([0.,0.,0.]))
glVertex3fv(np.array([0.,1.,0.]))
glColor3ub(0, 0, 255)
glVertex3fv(np.array([0.,0.,0]))
glVertex3fv(np.array([0.,0.,1.]))
glEnd()
def main():
global gVertexArrayIndexed, gIndexArray
if not glfw.init():
return
window = glfw.create_window(480, 480, "2021005923-5-1", None, None)
if not window:
glfw.terminate()
return
glfw.make_context_current(window)
glfw.set_key_callback(window, key_callback)
gVertexArrayIndexed, gIndexArray = createVertexAndIndexArrayIndexed()
while not glfw.window_should_close(window):
glfw.poll_events()
render()
glfw.swap_buffers(window)
glfw.terminate()
if __name__ == "__main__":
main()