Mercurial > touhou
comparison pytouhou/ui/opengl/gamerenderer.pyx @ 579:b8df946d394d
Add grouping for OpenGL calls, making traces much more readable.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Sun, 17 Aug 2014 16:16:58 +0200 |
| parents | b21922a03830 |
| children | 6e79756b7f42 |
comparison
equal
deleted
inserted
replaced
| 578:00f228b57840 | 579:b8df946d394d |
|---|---|
| 18 from pytouhou.lib.opengl cimport \ | 18 from pytouhou.lib.opengl cimport \ |
| 19 (glClear, glMatrixMode, glLoadIdentity, glLoadMatrixf, glDisable, | 19 (glClear, glMatrixMode, glLoadIdentity, glLoadMatrixf, glDisable, |
| 20 glEnable, glFogi, glFogf, glFogfv, GL_PROJECTION, GL_MODELVIEW, | 20 glEnable, glFogi, glFogf, glFogfv, GL_PROJECTION, GL_MODELVIEW, |
| 21 GL_FOG, GL_FOG_MODE, GL_LINEAR, GL_FOG_START, GL_FOG_END, | 21 GL_FOG, GL_FOG_MODE, GL_LINEAR, GL_FOG_START, GL_FOG_END, |
| 22 GL_FOG_COLOR, GL_COLOR_BUFFER_BIT, GLfloat, glViewport, glScissor, | 22 GL_FOG_COLOR, GL_COLOR_BUFFER_BIT, GLfloat, glViewport, glScissor, |
| 23 GL_SCISSOR_TEST, GL_DEPTH_BUFFER_BIT) | 23 GL_SCISSOR_TEST, GL_DEPTH_BUFFER_BIT, glPushDebugGroup, |
| 24 GL_DEBUG_SOURCE_APPLICATION, glPopDebugGroup) | |
| 24 | 25 |
| 25 from pytouhou.utils.matrix cimport mul, new_identity | 26 from pytouhou.utils.matrix cimport mul, new_identity |
| 26 from pytouhou.utils.maths cimport perspective, setup_camera, ortho_2d | 27 from pytouhou.utils.maths cimport perspective, setup_camera, ortho_2d |
| 27 from pytouhou.game.text cimport NativeText, GlyphCollection | 28 from pytouhou.game.text cimport NativeText, GlyphCollection |
| 28 from .shaders.eosd import GameShader, BackgroundShader, PassthroughShader | 29 from .shaders.eosd import GameShader, BackgroundShader, PassthroughShader |
| 91 self.render_game(game) | 92 self.render_game(game) |
| 92 self.render_text(game.texts) | 93 self.render_text(game.texts) |
| 93 self.render_interface(game.interface, game.boss) | 94 self.render_interface(game.interface, game.boss) |
| 94 | 95 |
| 95 if not is_legacy: | 96 if not is_legacy: |
| 97 glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, "Scaled rendering") | |
| 96 self.passthrough_shader.bind() | 98 self.passthrough_shader.bind() |
| 97 self.passthrough_shader.uniform_matrix('mvp', self.interface_mvp) | 99 self.passthrough_shader.uniform_matrix('mvp', self.interface_mvp) |
| 98 self.render_framebuffer(self.framebuffer) | 100 self.render_framebuffer(self.framebuffer) |
| 101 glPopDebugGroup() | |
| 99 | 102 |
| 100 | 103 |
| 101 cdef void render_game(self, Game game): | 104 cdef void render_game(self, Game game): |
| 102 cdef long game_x, game_y | 105 cdef long game_x, game_y |
| 103 cdef float x, y, z, dx, dy, dz | 106 cdef float x, y, z, dx, dy, dz |
| 104 cdef float fog_data[4] | 107 cdef float fog_data[4] |
| 105 cdef float fog_start, fog_end | 108 cdef float fog_start, fog_end |
| 106 cdef unsigned char fog_r, fog_g, fog_b | 109 cdef unsigned char fog_r, fog_g, fog_b |
| 107 cdef Matrix *mvp | 110 cdef Matrix *mvp |
| 111 | |
| 112 glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, "Game rendering") | |
| 108 | 113 |
| 109 game_x, game_y = game.interface.game_pos | 114 game_x, game_y = game.interface.game_pos |
| 110 glViewport(game_x, game_y, game.width, game.height) | 115 glViewport(game_x, game_y, game.width, game.height) |
| 111 glClear(GL_DEPTH_BUFFER_BIT) | 116 glClear(GL_DEPTH_BUFFER_BIT) |
| 112 glScissor(game_x, game_y, game.width, game.height) | 117 glScissor(game_x, game_y, game.width, game.height) |
| 202 color1 = Color(0, 0, 0, 192) | 207 color1 = Color(0, 0, 0, 192) |
| 203 color2 = Color(0, 0, 0, 128) | 208 color2 = Color(0, 0, 0, 128) |
| 204 self.render_quads([rect], [(color1, color1, color2, color2)], 0) | 209 self.render_quads([rect], [(color1, color1, color2, color2)], 0) |
| 205 | 210 |
| 206 glDisable(GL_SCISSOR_TEST) | 211 glDisable(GL_SCISSOR_TEST) |
| 212 glPopDebugGroup() | |
| 207 | 213 |
| 208 | 214 |
| 209 cdef void render_text(self, dict texts): | 215 cdef void render_text(self, dict texts): |
| 210 cdef NativeText label | 216 cdef NativeText label |
| 211 | 217 |
| 232 cdef void render_interface(self, interface, game_boss): | 238 cdef void render_interface(self, interface, game_boss): |
| 233 cdef GlyphCollection label | 239 cdef GlyphCollection label |
| 234 | 240 |
| 235 elements = [] | 241 elements = [] |
| 236 | 242 |
| 243 glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, "Interface rendering") | |
| 237 if is_legacy: | 244 if is_legacy: |
| 238 glMatrixMode(GL_MODELVIEW) | 245 glMatrixMode(GL_MODELVIEW) |
| 239 glLoadMatrixf(<GLfloat*>self.interface_mvp) | 246 glLoadMatrixf(<GLfloat*>self.interface_mvp) |
| 240 glDisable(GL_FOG) | 247 glDisable(GL_FOG) |
| 241 else: | 248 else: |
| 260 | 267 |
| 261 elements.extend(labels) | 268 elements.extend(labels) |
| 262 self.render_elements(elements) | 269 self.render_elements(elements) |
| 263 for label in labels: | 270 for label in labels: |
| 264 label.changed = False | 271 label.changed = False |
| 272 glPopDebugGroup() |
