Mercurial > touhou
diff pytouhou/ui/opengl/backend_sdl.pyx @ 635:80687f258001
Make sdl.Window inherit from gui.Window, so we can swap implementations.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Thu, 14 Apr 2016 21:18:03 +0100 |
parents | |
children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/pytouhou/ui/opengl/backend_sdl.pyx @@ -0,0 +1,41 @@ +from .backend cimport profile, major, minor, double_buffer, is_legacy + +cimport pytouhou.lib.sdl as sdl + + +def create_sdl_window(title, x, y, width, height): + '''Create a window (using SDL) and an OpenGL context.''' + + profile_mask = (sdl.GL_CONTEXT_PROFILE_CORE if profile == 'core' else + sdl.GL_CONTEXT_PROFILE_ES if profile == 'es' else + sdl.GL_CONTEXT_PROFILE_COMPATIBILITY) + + sdl.gl_set_attribute(sdl.GL_CONTEXT_PROFILE_MASK, profile_mask) + sdl.gl_set_attribute(sdl.GL_CONTEXT_MAJOR_VERSION, major) + sdl.gl_set_attribute(sdl.GL_CONTEXT_MINOR_VERSION, minor) + sdl.gl_set_attribute(sdl.GL_RED_SIZE, 8) + sdl.gl_set_attribute(sdl.GL_GREEN_SIZE, 8) + sdl.gl_set_attribute(sdl.GL_BLUE_SIZE, 8) + sdl.gl_set_attribute(sdl.GL_DEPTH_SIZE, 24 if is_legacy else 0) + if double_buffer >= 0: + sdl.gl_set_attribute(sdl.GL_DOUBLEBUFFER, double_buffer) + + flags = sdl.WINDOW_SHOWN | sdl.WINDOW_OPENGL + + # Legacy contexts don’t support our required extensions for scaling. + if not is_legacy: + flags |= sdl.WINDOW_RESIZABLE + + window = sdl.Window(title, x, y, width, height, flags) + #window.create_gl_context() + + #discover_features() + + ## If we can’t use scaling but have previously created a resizable window, + ## recreate it unresizable. + #if not use_scaled_rendering and flags & sdl.WINDOW_RESIZABLE: + # flags &= ~sdl.WINDOW_RESIZABLE + # window = sdl.Window(title, x, y, width, height, flags) + # window.create_gl_context() + + return window