@@ -42,8 +42,8 @@ def draw(self, time, frametime, target):
42
42
m_mv = self .create_transformation (rotation = (time * 1.2 , time * 2.1 , time * 0.25 ),
43
43
translation = (- 7.0 , 0.0 , - 12.0 ))
44
44
45
- self .program . uniform ( "m_proj" , self .sys_camera .projection .tobytes ())
46
- self .program . uniform ( "m_mv" , m_mv .astype ('f4' ).tobytes ())
45
+ self .program [ "m_proj" ]. write ( self .sys_camera .projection .tobytes ())
46
+ self .program [ "m_mv" ]. write ( m_mv .astype ('f4' ).tobytes ())
47
47
self .cube .draw (self .program )
48
48
49
49
@@ -56,14 +56,22 @@ def __init__(self, cube):
56
56
self .cube = cube
57
57
self .program = self .get_program ("light" )
58
58
59
+ # Pre-fetch the uniforms
60
+ self .m_proj = self .program ["m_proj" ]
61
+ self .m_mv = self .program ["m_mv" ]
62
+ self .m_normal = self .program ["m_normal" ]
63
+
59
64
def draw (self , time , frametime , target ):
60
65
m_mv = self .create_transformation (rotation = (time * 1.2 , time * 2.1 , time * 0.25 ),
61
66
translation = (0.0 , 0.0 , - 12.0 ))
62
67
m_normal = self .create_normal_matrix (m_mv )
63
68
64
- self .program .uniform ("m_proj" , self .sys_camera .projection .tobytes ())
65
- self .program .uniform ("m_mv" , m_mv .astype ('f4' ).tobytes ())
66
- self .program .uniform ("m_normal" , m_normal .astype ('f4' ).tobytes ())
69
+ # Write to uniforms
70
+ self .m_proj .write (self .sys_camera .projection .tobytes ())
71
+ self .m_mv .write (m_mv .astype ('f4' ).tobytes ())
72
+ self .m_normal .write (m_normal .astype ('f4' ).tobytes ())
73
+
74
+ # Draw the cube
67
75
self .cube .draw (self .program )
68
76
69
77
@@ -77,14 +85,22 @@ def __init__(self, cube):
77
85
self .program = self .get_program ("textured" )
78
86
self .texture = self .get_texture ("crate" )
79
87
88
+ # pre-fetch the uniform buffers
89
+ self .m_proj = self .program ["m_proj" ]
90
+ self .m_mv = self .program ["m_mv" ]
91
+ self .m_normal = self .program ["m_normal" ]
92
+ self .wood = self .program ["wood" ]
93
+
80
94
def draw (self , time , frametime , target ):
81
95
m_mv = self .create_transformation (rotation = (time * 1.2 , time * 2.1 , time * 0.25 ),
82
96
translation = (7.0 , 0.0 , - 12.0 ))
83
97
m_normal = self .create_normal_matrix (m_mv )
84
98
85
- self .program .uniform ("m_proj" , self .sys_camera .projection .tobytes ())
86
- self .program .uniform ("m_mv" , m_mv .astype ('f4' ).tobytes ())
87
- self .program .uniform ("m_normal" , m_normal .astype ('f4' ).tobytes ())
99
+ self .m_proj .write (self .sys_camera .projection .tobytes ())
100
+ self .m_mv .write (m_mv .astype ('f4' ).tobytes ())
101
+ self .m_normal .write (m_normal .astype ('f4' ).tobytes ())
102
+
88
103
self .texture .use (location = 0 )
89
- self .program .uniform ("wood" , 0 )
104
+ self .wood .value = 0
105
+
90
106
self .cube .draw (self .program )
0 commit comments