Skip to content

Commit b5e9155

Browse files
Use on_draw event for rendering.
Instead of calling render() directly, hook into the on_draw event for rendering. Just in-case any other code / libraries trigger or need on_draw to work. Remove debug print statement.
1 parent daa4395 commit b5e9155

File tree

13 files changed

+176
-57
lines changed

13 files changed

+176
-57
lines changed

examples/create_window/main.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ def __init__( self ):
3333
resizable = True,
3434
config = config
3535
)
36+
37+
# display the current FPS
38+
self.fps_display = pyglet.clock.ClockDisplay()
39+
40+
# listen for on_draw events
41+
self.window.push_handlers(
42+
on_draw = self.on_draw
43+
)
3644

3745
# setup our update loop the app
3846
# we don't need to do this to get the window
@@ -41,21 +49,22 @@ def __init__( self ):
4149
# we'll render at 60 fps
4250
frequency = 60.0
4351
self.update_delta = 1.0 / frequency
52+
4453
# use a pyglet callback for our render loop
4554
pyglet.clock.schedule_interval(
4655
self.step,
4756
self.update_delta
4857
)
49-
50-
# display the current FPS
51-
self.fps_display = pyglet.clock.ClockDisplay()
52-
53-
print "Rendering at %iHz" % int(frequency)
5458

5559
def run( self ):
5660
pyglet.app.run()
5761

5862
def step( self, dt ):
63+
# manually dispatch the on_draw event
64+
# as we patched it out of the idle loop
65+
self.window.dispatch_event( 'on_draw' )
66+
67+
def on_draw( self ):
5968
# clear our frame buffer and depth buffer
6069
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )
6170

examples/fps_camera/main.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,27 @@ def __init__( self ):
6868

6969
# setup our text
7070
self.setup_text()
71+
72+
# listen for on_draw events
73+
self.window.push_handlers(
74+
on_draw = self.on_draw
75+
)
7176

7277
# setup our update loop the app
7378
# we'll render at 60 fps
7479
frequency = 60.0
7580
self.update_delta = 1.0 / frequency
81+
7682
# use a pyglet callback for our render loop
7783
pyglet.clock.schedule_interval(
7884
self.step,
7985
self.update_delta
8086
)
8187

82-
# display the current FPS
88+
def setup_scene( self ):
89+
# create an fps display
8390
self.fps_display = pyglet.clock.ClockDisplay()
84-
85-
print "Rendering at %iHz" % int(frequency)
8691

87-
def setup_scene( self ):
8892
# create a scene
8993
self.scene_node = SceneNode( 'root' )
9094
self.grid_node = SceneNode( 'grid' )
@@ -154,6 +158,12 @@ def run( self ):
154158
def step( self, dt ):
155159
self.move_camera( dt )
156160

161+
# manually dispatch the on_draw event
162+
# as we patched it out of the idle loop
163+
self.window.dispatch_event( 'on_draw' )
164+
165+
def on_draw( self ):
166+
# render our scene
157167
self.render()
158168

159169
# render the fps

examples/low_level/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,27 @@ def __init__( self ):
4949

5050
# setup our scene
5151
self.setup_scene()
52+
53+
# listen for on_draw events
54+
self.window.push_handlers(
55+
on_draw = self.on_draw
56+
)
5257

5358
# setup our update loop the app
5459
# we'll render at 60 fps
5560
frequency = 60.0
5661
self.update_delta = 1.0 / frequency
62+
5763
# use a pyglet callback for our render loop
5864
pyglet.clock.schedule_interval(
5965
self.step,
6066
self.update_delta
6167
)
6268

63-
# display the current FPS
69+
def setup_scene( self ):
70+
# create an fps display
6471
self.fps_display = pyglet.clock.ClockDisplay()
6572

66-
print "Rendering at %iHz" % int(frequency)
67-
68-
def setup_scene( self ):
6973
# create a scene
7074
self.scene_node = SceneNode( 'root' )
7175

@@ -138,6 +142,11 @@ def step( self, dt ):
138142
self.sn1.transform.object.rotate_y( dt )
139143
self.sn2.transform.object.rotate_y( dt )
140144

145+
# manually dispatch the on_draw event
146+
# as we patched it out of the idle loop
147+
self.window.dispatch_event( 'on_draw' )
148+
149+
def on_draw( self ):
141150
self.render()
142151

143152
# render the fps

examples/mesh_md2/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,23 +58,27 @@ def __init__( self ):
5858

5959
# setup our scene
6060
self.setup_scene()
61+
62+
# listen for on_draw events
63+
self.window.push_handlers(
64+
on_draw = self.on_draw
65+
)
6166

6267
# setup our update loop the app
6368
# we'll render at 60 fps
6469
frequency = 60.0
6570
self.update_delta = 1.0 / frequency
71+
6672
# use a pyglet callback for our render loop
6773
pyglet.clock.schedule_interval(
6874
self.step,
6975
self.update_delta
7076
)
7177

72-
# display the current FPS
78+
def setup_scene( self ):
79+
# create an fps display
7380
self.fps_display = pyglet.clock.ClockDisplay()
74-
75-
print "Rendering at %iHz" % int(frequency)
7681

77-
def setup_scene( self ):
7882
self.renderables = []
7983

8084
# create a scene
@@ -194,6 +198,11 @@ def step( self, dt ):
194198
# rotate the mesh about it's own vertical axis
195199
mesh_node.transform.object.rotate_y( dt )
196200

201+
# manually dispatch the on_draw event
202+
# as we patched it out of the idle loop
203+
self.window.dispatch_event( 'on_draw' )
204+
205+
def on_draw( self ):
197206
self.render()
198207

199208
# render the fps

examples/mesh_obj/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,27 @@ def __init__( self ):
5656

5757
# setup our scene
5858
self.setup_scene()
59+
60+
# listen for on_draw events
61+
self.window.push_handlers(
62+
on_draw = self.on_draw
63+
)
5964

6065
# setup our update loop the app
6166
# we'll render at 60 fps
6267
frequency = 60.0
6368
self.update_delta = 1.0 / frequency
69+
6470
# use a pyglet callback for our render loop
6571
pyglet.clock.schedule_interval(
6672
self.step,
6773
self.update_delta
6874
)
6975

70-
# display the current FPS
76+
def setup_scene( self ):
77+
# create an fps display
7178
self.fps_display = pyglet.clock.ClockDisplay()
72-
73-
print "Rendering at %iHz" % int(frequency)
7479

75-
def setup_scene( self ):
7680
# store a list of our renderables
7781
self.renderables = []
7882

@@ -123,6 +127,11 @@ def step( self, dt ):
123127
# rotate the mesh about it's own vertical axis
124128
self.mesh_node.transform.object.rotate_y( dt )
125129

130+
# manually dispatch the on_draw event
131+
# as we patched it out of the idle loop
132+
self.window.dispatch_event( 'on_draw' )
133+
134+
def on_draw( self ):
126135
# render the scene
127136
self.render()
128137

examples/multiple_viewports/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,23 +63,27 @@ def __init__( self ):
6363

6464
# setup our scene
6565
self.setup_scene()
66+
67+
# listen for on_draw events
68+
self.window.push_handlers(
69+
on_draw = self.on_draw
70+
)
6671

6772
# setup our update loop the app
6873
# we'll render at 60 fps
6974
frequency = 60.0
7075
self.update_delta = 1.0 / frequency
76+
7177
# use a pyglet callback for our render loop
7278
pyglet.clock.schedule_interval(
7379
self.step,
7480
self.update_delta
7581
)
7682

77-
# display the current FPS
83+
def setup_scene( self ):
84+
# create an fps display
7885
self.fps_display = pyglet.clock.ClockDisplay()
7986

80-
print "Rendering at %iHz" % int(frequency)
81-
82-
def setup_scene( self ):
8387
# create a list of renderables
8488
self.renderables = []
8589

@@ -159,6 +163,11 @@ def step( self, dt ):
159163
# rotate the mesh about it's own vertical axis
160164
self.grid_node.transform.object.rotate_y( dt )
161165

166+
# manually dispatch the on_draw event
167+
# as we patched it out of the idle loop
168+
self.window.dispatch_event( 'on_draw' )
169+
170+
def on_draw( self ):
162171
# render the scene
163172
self.render()
164173

examples/orthographic/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,27 @@ def __init__( self ):
5151

5252
# setup our scene
5353
self.setup_scene()
54+
55+
# listen for on_draw events
56+
self.window.push_handlers(
57+
on_draw = self.on_draw
58+
)
5459

5560
# setup our update loop the app
5661
# we'll render at 60 fps
5762
frequency = 60.0
5863
self.update_delta = 1.0 / frequency
64+
5965
# use a pyglet callback for our render loop
6066
pyglet.clock.schedule_interval(
6167
self.step,
6268
self.update_delta
6369
)
6470

65-
# display the current FPS
71+
def setup_scene( self ):
72+
# create an fps display
6673
self.fps_display = pyglet.clock.ClockDisplay()
6774

68-
print "Rendering at %iHz" % int(frequency)
69-
70-
def setup_scene( self ):
7175
# create a scene
7276
self.scene_node = SceneNode( 'root' )
7377

@@ -123,6 +127,11 @@ def step( self, dt ):
123127
self.sn1.transform.object.rotate_y( dt )
124128
self.sn2.transform.object.rotate_y( dt )
125129

130+
# manually dispatch the on_draw event
131+
# as we patched it out of the idle loop
132+
self.window.dispatch_event( 'on_draw' )
133+
134+
def on_draw( self ):
126135
# render the scene
127136
self.render()
128137

examples/ray_casting/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,27 @@ def __init__( self ):
7070

7171
# setup our text
7272
self.setup_text()
73+
74+
# listen for on_draw events
75+
self.window.push_handlers(
76+
on_draw = self.on_draw
77+
)
7378

7479
# setup our update loop the app
7580
# we'll render at 60 fps
7681
frequency = 60.0
7782
self.update_delta = 1.0 / frequency
83+
7884
# use a pyglet callback for our render loop
7985
pyglet.clock.schedule_interval(
8086
self.step,
8187
self.update_delta
8288
)
8389

84-
# display the current FPS
90+
def setup_scene( self ):
91+
# create an fps display
8592
self.fps_display = pyglet.clock.ClockDisplay()
86-
87-
print "Rendering at %iHz" % int(frequency)
8893

89-
def setup_scene( self ):
9094
# create a list of renderables
9195
self.renderables = []
9296

@@ -219,6 +223,11 @@ def step( self, dt ):
219223
# rotate the mesh about it's own vertical axis
220224
self.mesh_node.transform.object.rotate_y( dt )
221225

226+
# manually dispatch the on_draw event
227+
# as we patched it out of the idle loop
228+
self.window.dispatch_event( 'on_draw' )
229+
230+
def on_draw( self ):
222231
# render the scene
223232
self.render()
224233

examples/render_callbacks/main.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,27 @@ def __init__( self ):
5252

5353
# setup our scene
5454
self.setup_scene()
55+
56+
# listen for on_draw events
57+
self.window.push_handlers(
58+
on_draw = self.on_draw
59+
)
5560

5661
# setup our update loop the app
5762
# we'll render at 60 fps
5863
frequency = 60.0
5964
self.update_delta = 1.0 / frequency
65+
6066
# use a pyglet callback for our render loop
6167
pyglet.clock.schedule_interval(
6268
self.step,
6369
self.update_delta
6470
)
6571

66-
# display the current FPS
72+
def setup_scene( self ):
73+
# create an fps display
6774
self.fps_display = pyglet.clock.ClockDisplay()
6875

69-
print "Rendering at %iHz" % int(frequency)
70-
71-
def setup_scene( self ):
7276
# store a list of renderables
7377
self.renderables = []
7478

@@ -145,6 +149,11 @@ def step( self, dt ):
145149
# rotate the mesh about it's own vertical axis
146150
self.grid_node.transform.object.rotate_y( dt )
147151

152+
# manually dispatch the on_draw event
153+
# as we patched it out of the idle loop
154+
self.window.dispatch_event( 'on_draw' )
155+
156+
def on_draw( self ):
148157
self.render()
149158

150159
# render the fps

0 commit comments

Comments
 (0)