def __init__(self, *, size=None, title=None): super().__init__() # Handle inputs if not size: size = 640, 480 title = str(title or "") # Set window hints glfw.window_hint(glfw.CLIENT_API, glfw.NO_API) glfw.window_hint(glfw.RESIZABLE, True) # see https://github.com/FlorianRhiem/pyGLFW/issues/42 # Alternatively, from pyGLFW 1.10 one can set glfw.ERROR_REPORTING='warn' if sys.platform.startswith("linux"): if "wayland" in os.getenv("XDG_SESSION_TYPE", "").lower(): glfw.window_hint(glfw.FOCUSED, False) # prevent Wayland focus error # Create the window (the initial size may not be in logical pixels) self._window = glfw.create_window(int(size[0]), int(size[1]), title, None, None) # Register ourselves self._need_draw = True all_glfw_canvases.add(self) # Register callbacks. We may get notified too often, but that's # ok, they'll result in a single draw. glfw.set_window_content_scale_callback(self._window, self._on_pixelratio_change) glfw.set_framebuffer_size_callback(self._window, self._on_size_change) glfw.set_window_close_callback(self._window, self._on_close) glfw.set_window_refresh_callback(self._window, self._on_window_dirty) glfw.set_window_focus_callback(self._window, self._on_window_dirty) glfw.set_window_maximize_callback(self._window, self._on_window_dirty) # Initialize the size self.set_logical_size(*size)
def __init__(self, objects=[], options={}): super().__init__() self.parseOptions(options) self.cameraCursor = [0.0, 0.0] self.cameraMove = False self.cameraRotate = False self.redisplay = True self.titleText = 'OpenGL 4.1 render' glfw.init() try: self.window = glfw.create_window(*self.viewport, self.titleText, None, None) glfw.make_context_current(self.window) except: print('Window initialization failed') glfw.terminate() exit() self.initGraphics() self.updateMatrix(self.viewport) glfw.set_key_callback(self.window, self.handleKeyEvent) glfw.set_mouse_button_callback(self.window, self.handleMouseButtonEvent) glfw.set_cursor_pos_callback(self.window, self.handleCursorMoveEvent) glfw.set_scroll_callback(self.window, self.handleScrollEvent) glfw.set_window_refresh_callback(self.window, self.handleResizeEvent) self.objects = set() self.appendRenderObjects(self.makeRenderObjects(objects))
def __init__(self, w=640, h=480, title="Plot", parent=None): self.parent = parent self.stageLock = threading.Lock() self.staged = None self.plotter = openglplot.PlotGl(w, h) self.window = glfw.create_window(w, h, title, None, None) #print "Is accelerated:", glfw.get_window_param(glfw.GLFW_ACCELERATED) #glfw.make_context_current(self.window) self.plotter.setupProjection() self.plotter.setData([0, 1, 2, 3], [4, 3, 4, 5]) glfw.set_window_size_callback(self.window, self.resize_cb) glfw.set_window_refresh_callback(self.window, self.refresh_cb)
def __init__(self, window_title, window_size, window_position, func_Ldown, func_Lup, func_Rdown, func_Rup, func_Mdown, func_Mup, func_mouse_move, func_mouse_wheel, func_draw_scene, func_on_keydown, func_on_keyup, func_on_keykeep): self.window = glfw.create_window(window_size[0], window_size[1], window_title, None, None) self.cam_pos = np.array([0.0, 0.0, 1000.0], dtype=np.float32) self.cam_up = np.array([0.0, 1.0, 0.0], dtype=np.float32) self.cam_cnt = np.array([0.0, 0.0, 0.0], dtype=np.float32) self.b_rendering = False self.viewscale = 1000 self.clearcolor = np.array([0.2, 0.2, 0.2, 1.0]) if not self.window: glfw.terminate() raise RuntimeError('Could not create an window') self.func_Ldown, self.func_Lup = func_Ldown, func_Lup self.func_Rdown, self.func_Rup = func_Rdown, func_Rup self.func_Mdown, self.func_Mup = func_Mdown, func_Mup self.func_mouse_move = func_mouse_move self.func_draw_scene = func_draw_scene self.func_on_keydown = func_on_keydown self.func_on_keyup = func_on_keyup self.func_on_keykeep = func_on_keykeep self.func_mouse_wheel = func_mouse_wheel #set callback functions glfw.set_cursor_pos_callback(self.window, self.cursor_pos) glfw.set_cursor_enter_callback(self.window, self.cursor_enter) glfw.set_mouse_button_callback(self.window, self.mouse_button) glfw.set_scroll_callback(self.window, self.mouse_wheel) glfw.set_window_refresh_callback(self.window, self.window_refresh) glfw.set_key_callback(self.window, self.func_keyboard) glfw.set_window_pos(self.window, window_position[0], window_position[1]) #call display from here (TODO check! is this necessary?) glfw.make_context_current(self.window) self.display() # necessary only on Windows
def main(): global window if not glfw.init(): return glfw.window_hint(glfw.DOUBLEBUFFER, glfw.TRUE) window = glfw.create_window(window_width, window_height, "maikura-modoki", None, None) if not window: glfw.terminate() return glfw.set_window_size_callback(window, window_size_callback) glfw.set_window_refresh_callback(window, window_refresh_callback) glfw.set_key_callback(window, key_callback) glfw.set_cursor_pos_callback(window, cursor_pos_callback) glfw.set_mouse_button_callback(window, mouse_button_callback) glfw.make_context_current(window) glClearColor(0.5, 0.8, 1.0, 1.0) glEnable(GL_DEPTH_TEST) glEnable(GL_CULL_FACE) glCullFace(GL_BACK) glEnable(GL_LIGHTING) glEnable(GL_LIGHT0) glEnable(GL_LIGHT1) init() set_view(window_width, window_height) display() while not glfw.window_should_close(window): glfw.wait_events_timeout(1e-3) update() glfw.terminate()
#print("OpenGL version: %d.%d.%d\n" % glfw.get_gl_version()) #glfw.ext.set_icons([(icon_data, icon_width, icon_height)]) glfw.set_window_title(w, "pyglfw test") #glfw.disable(w, glfw.AUTO_POLL_EVENTS) #glfw.enable(w, glfw.KEY_REPEAT) center_x = int(vm[0][0] / 2 - glfw.get_window_size(w)[0] / 2) center_y = int(vm[0][1] / 2 - glfw.get_window_size(w)[1] / 2) print( "new window position: {!s}, {!s}".format(center_x, center_y) ) glfw.set_window_pos(w, center_x, center_y) glfw.set_window_size_callback(w, on_resize) glfw.set_window_close_callback(w, on_close) glfw.set_window_refresh_callback(w, on_refresh) glfw.set_key_callback(w, on_key) glfw.set_char_callback(w, on_char) glfw.set_mouse_button_callback(w, on_button) glfw.set_cursor_pos_callback(w, on_pos) glfw.set_scroll_callback(w, on_scroll) while not glfw.window_should_close(w): glfw.poll_events() if glfw.get_key(w, glfw.KEY_E) == glfw.PRESS: break glClear(GL_COLOR_BUFFER_BIT) glfw.swap_buffers(w)
#print("OpenGL version: %d.%d.%d\n" % glfw.get_gl_version()) #glfw.ext.set_icons([(icon_data, icon_width, icon_height)]) glfw.set_window_title(w, "pyglfw test") #glfw.disable(w, glfw.AUTO_POLL_EVENTS) #glfw.enable(w, glfw.KEY_REPEAT) center_x = int(vm[0][0] / 2 - glfw.get_window_size(w)[0] / 2) center_y = int(vm[0][1] / 2 - glfw.get_window_size(w)[1] / 2) print("new window position: {!s}, {!s}".format(center_x, center_y)) glfw.set_window_pos(w, center_x, center_y) glfw.set_window_size_callback(w, on_resize) glfw.set_window_close_callback(w, on_close) glfw.set_window_refresh_callback(w, on_refresh) glfw.set_key_callback(w, on_key) glfw.set_char_callback(w, on_char) glfw.set_mouse_button_callback(w, on_button) glfw.set_cursor_pos_callback(w, on_pos) glfw.set_scroll_callback(w, on_scroll) while not glfw.window_should_close(w): glfw.poll_events() if glfw.get_key(w, glfw.KEY_E) == glfw.PRESS: break glClear(GL_COLOR_BUFFER_BIT) glfw.swap_buffers(w)
else: dragging = False dragging = False if not glfw.init(): raise RuntimeError('Could not initialize GLFW3') glfw.window_hint(glfw.DOUBLEBUFFER, glfw.FALSE) window = glfw.create_window(W_INIT, H_INIT, 'WalkThrough_06', None, None) if not window: glfw.terminate() raise RuntimeError('Could not create an window') glfw.set_window_size_callback(window, resize) glfw.set_window_refresh_callback(window, window_refresh) glfw.set_cursor_pos_callback(window, cursor_pos) glfw.set_mouse_button_callback(window, mouse_button) glfw.make_context_current(window) gen_cube() scene() init() while not glfw.window_should_close(window): glfw.wait_events() glfw.terminate()
def __init__(self, vispy_canvas, **kwargs): BaseCanvasBackend.__init__(self, vispy_canvas) p = self._process_backend_kwargs(kwargs) self._initialized = False # Deal with config _set_config(p.context.config) # Deal with context p.context.shared.add_ref('glfw', self) if p.context.shared.ref is self: share = None else: share = p.context.shared.ref._id glfw.window_hint(glfw.REFRESH_RATE, 0) # highest possible glfw.window_hint(glfw.RESIZABLE, int(p.resizable)) glfw.window_hint(glfw.DECORATED, int(p.decorate)) glfw.window_hint(glfw.VISIBLE, 0) # start out hidden glfw.window_hint(glfw.FLOATING, int(p.always_on_top)) if p.fullscreen is not False: self._fullscreen = True if p.fullscreen is True: monitor = glfw.get_primary_monitor() else: monitor = glfw.get_monitors() if p.fullscreen >= len(monitor): raise ValueError('fullscreen must be <= %s' % len(monitor)) monitor = monitor[p.fullscreen] use_size = glfw.get_video_mode(monitor)[:2] if use_size != tuple(p.size): logger.debug('Requested size %s, will be ignored to ' 'use fullscreen mode %s' % (p.size, use_size)) size = use_size else: self._fullscreen = False monitor = None size = p.size self._id = glfw.create_window(width=size[0], height=size[1], title=p.title, monitor=monitor, share=share) if not self._id: raise RuntimeError('Could not create window') glfw.make_context_current(self._id) glfw.swap_interval(1 if p.vsync else 0) # needs a valid context _VP_GLFW_ALL_WINDOWS.append(self) self._mod = list() # Register callbacks glfw.set_window_refresh_callback(self._id, self._on_draw) glfw.set_window_size_callback(self._id, self._on_resize) glfw.set_key_callback(self._id, self._on_key_press) glfw.set_char_callback(self._id, self._on_key_char) glfw.set_mouse_button_callback(self._id, self._on_mouse_button) glfw.set_scroll_callback(self._id, self._on_mouse_scroll) glfw.set_cursor_pos_callback(self._id, self._on_mouse_motion) glfw.set_window_close_callback(self._id, self._on_close) self._vispy_canvas_ = None self._needs_draw = False self._vispy_canvas.set_current() if p.position is not None: self._vispy_set_position(*p.position) if p.show: glfw.show_window(self._id) # Init self._initialized = True self._next_key_events = [] self._next_key_text = {} self._vispy_canvas.set_current() self._vispy_canvas.events.initialize() self._on_resize(self._id, size[0], size[1])