-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgraphics.txt
More file actions
198 lines (179 loc) · 4.44 KB
/
graphics.txt
File metadata and controls
198 lines (179 loc) · 4.44 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
task: generate vao
-start
-create vertex array object
-bind VAO
-create and bind position buffer
-load position data
-set position attribute
-enable position attribute
-if UVs provided
-create and bind UV buffer
-load UV data
-set UV attribute
-enable UV attribute
-if normals provided
-create and bind normal buffer
-load normal data
-set normal attribute
-enable normal attribute
-create and bind index buffer
-load index data
-unbind VAO
-return VAO
-end
task: generate shader
-start
-read vertex shader file
-read fragment shader file
-create vertex shader
-set vertex shader source
-compile vertex shader
-check vertex shader compilation
-create fragment shader
-set fragment shader source
-compile fragment shader
-check fragment shader compilation
-create shader program
-attach vertex shader
-attach fragment shader
-link shader program
-check shader program linking
-delete vertex shader
-delete fragment shader
-return shader program
-end
object: app
task: init
-start
-store window dimensions, frame dimensions, resizable, title
-store button callbacks
-initialize pygame
-set window title
-set clear color
-clear color and depth buffers
-flip display
-create tkinter root
-set window title and size
-run GUI instansiation function
-end
task: instansiate GUI
-start
-create main frame
-create viewport frame
-create framebuffer label
-create hierarchy frame
-configure treeview style
-create hierarchy treeview
-bind treeview select event
-create command frame
-create command viewport
-create delete, rename, backward, forward buttons
-end
task: run directory popup window
-start
-hide main window
-create popup window
-set popup title and size
-create directory label
-pack directory label
-configure treeview style
-create directory treeview
-pack directory treeview
-list drives in treeview
-create select button binded callback
-pack select button
-end
task: render opengl framebuffer to tkinter canvas from pygame window
-start
-bind read framebuffer
-read pixels from framebuffer
-create image from pixels
-flip image vertically
-create photo image
-configure framebuffer label with photo
-unbind read framebuffer
-end
task: bind apps opengl impl for rendering
-start
-process pygame events
-if quit event
-set should_close to true
-set clear color
-clear color and depth buffers
-end
task: unbind apps opengl impl from rendering
-start
-unbind framebuffer
-end
task: refresh tkinter windows and displays / set pygame tickrate
-start
-if a directory is selected in side panel
-show root window
-tick apps 'clock' at tickrate
-render framebuffer to canvas
-update tkinter root window
-end
task: function for seeing if the app was closed or not
-start
-return should close variable
-end
-class end
object: camera
task: init
-start
-creat FOV, position, rotation variables
-initialize empty camera matrix
-end
task: calculate camera matrix
-start
-create perspective projection matrix
-create view matrix with eye, target, up
-multiply projection and view matrices
-store result in objects camera matrix variable
-end
task: run matrix related functions
-start
-call camera matrix with position, rotation, up vector and app
-end
class end
object: mesh
-task: package vertex data into seperate lists
-start
-store positions, indices, UVs, normals
-end
class end
object: model
task: init
-start
-store mesh
-store position, rotation and scale
-generate VAO from mesh data
-generate shader from vertex / fragment paths
-create empty model matrix
-end
-task: calculate the transformation matrix
-start
-create scale matrix
-create rotation matrix from Euler angles
-create translation matrix
-multiply translation, rotation and scale matrices
-store result in model matrix
-end
task: render self
-start
-update camera matrix
-update transform matrix
-calculate final matrix (camera matrix multiplied by model matrix)
-use shader program
-bind VAO
-set transform matrix uniform
-draw elements opengl function (GL_TRIANGLES)
-unbind VAO
-unuse shader program
-end
task: delete self
-start
-delete VAO
-delete shader program
-end
class end