Sha256: bbeebbedf9cea06bfcff05cb268a50199960fb3787cf5ec54c3d0f0225381a05

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

require_relative 'sdl2_input'
require 'nuklear/nuklear_renderer_opengl2'

module Examples
  class Window
    include Examples::SDL2Input
    attr_reader :nuklear_context

    def initialize(title = "Example", left: 0, top: 0, width: 640, height: 480, hidden: false)
      flags = SDL2::Window::Flags::OPENGL |
              SDL2::Window::Flags::ALLOW_HIGHDPI |
              SDL2::Window::Flags::RESIZABLE
      flags = flags | SDL2::Window::Flags::HIDDEN if hidden
      @handle = SDL2::Window.create title, left, top, width, height, flags
      @gl = SDL2::GL::Context.create(@handle)
      @focused = false
      glViewport(0, 0, *renderable_size)
      glClearColor(0, 0, 0, 0)
    end

    def close
      @handle.destroy
    end

    def frame
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
      process_sdl2_events(@nuklear_context)
      yield # do app specific stuff
      @handle.gl_swap
    end

    def focused?
      @focused
    end

    def nuklear_context=(ctx)
      @nuklear_context = ctx
      @nuklear_context.renderer = Nuklear::Renderer::OpenGL2.new
      @nuklear_context.renderer.window_size = @handle.size
      @nuklear_context.renderer.drawable_size = renderable_size
    end

    def renderable_size
      @handle.gl_drawable_size
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nuklear-0.1.3 examples/lib/window.rb
nuklear-0.1.2 examples/lib/window.rb
nuklear-0.1.1 examples/lib/window.rb