Completed
Push — master ( 18427b...00e611 )
by Matthew
01:02
created

ed2d.View.set_uniforms()   A

Complexity

Conditions 2

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 2
dl 0
loc 11
rs 9.4286
1
from ed2d import idgen
2
3
class View(object):
4
5
    def __init__(self):
6
7
        self.sids = idgen.IdGenerator()
8
        self.programs = []
9
        self.uniforms = []
10
        self.uniformIds = []
11
12
        self.pids = idgen.IdGenerator()
13
        self.projections = []
14
        self.projNames = []
15
        self.progPerProj = []
16
17
    def new_projection(self, name, projection):
18
        pid = self.pids.gen_id()
19
20
        idgen.set_uid_list(self.projNames, pid, name)
21
        idgen.set_uid_list(self.projections, pid, projection)
22
        idgen.set_uid_list(self.progPerProj, pid, [])
23
24
    def set_projection(self, name, projection):
25
        pid = self.projNames.index(name)
26
        sids = self.progPerProj[pid]
27
28
        self.projections[pid] = projection
29
30
        for i in sids:
31
            program = self.programs[i-1]
32
            program.use()
33
            uniformId = self.uniformIds[i-1]
34
            program.set_uniform_matrix(uniformId, projection)
35
36
    def create_uniforms(self, name):
37
        pid = self.projNames.index(name)
38
        sids = self.progPerProj[pid]
39
        projection = self.projections[pid]
40
41
        for i in sids:
42
            program = self.programs[i-1]
43
            program.use()
44
45
            uniformId = program.new_uniform(name.encode('utf-8'))
46
            program.set_uniform_matrix(uniformId, projection)
47
            self.uniformIds[i-1] = uniformId
48
49
50
    def register_shader(self, projName, program):
51
        pid = self.projNames.index(projName)
52
        sid = self.sids.gen_id()
53
        print (sid)
54
55
        self.progPerProj[pid].append(sid)
56
57
        idgen.set_uid_list(self.programs, sid, program)
58
        idgen.set_uid_list(self.uniformIds, sid, [])
59
60
        self.create_uniforms(projName)
61