Class: RBGL::Engine::Context
- Inherits:
-
Object
- Object
- RBGL::Engine::Context
- Defined in:
- lib/rbgl/engine/context.rb
Instance Attribute Summary collapse
-
#framebuffer ⇒ Object
readonly
Returns the value of attribute framebuffer.
-
#rasterizer ⇒ Object
readonly
Returns the value of attribute rasterizer.
Instance Method Summary collapse
- #aspect_ratio ⇒ Object
- #bind_index_buffer(buffer) ⇒ Object
- #bind_pipeline(pipeline) ⇒ Object
- #bind_vertex_buffer(buffer) ⇒ Object
- #clear(color: Larb::Color.black, depth: Float::INFINITY) ⇒ Object
- #draw_arrays(mode, first, count) ⇒ Object
- #draw_elements(mode, count, offset = 0) ⇒ Object
- #height ⇒ Object
-
#initialize(width:, height:) ⇒ Context
constructor
A new instance of Context.
- #resize(width:, height:) ⇒ Object
- #set_uniform(name, value) ⇒ Object
- #set_uniforms(hash) ⇒ Object
- #width ⇒ Object
Constructor Details
#initialize(width:, height:) ⇒ Context
Returns a new instance of Context.
8 9 10 11 12 13 14 15 16 |
# File 'lib/rbgl/engine/context.rb', line 8 def initialize(width:, height:) @framebuffer = Framebuffer.new(width, height) @rasterizer = Rasterizer.new(@framebuffer) @clipper = ClipSpaceClipper.new @pipeline = nil @uniforms = Uniforms.new @vertex_buffer = nil @index_buffer = nil end |
Instance Attribute Details
#framebuffer ⇒ Object (readonly)
Returns the value of attribute framebuffer.
6 7 8 |
# File 'lib/rbgl/engine/context.rb', line 6 def framebuffer @framebuffer end |
#rasterizer ⇒ Object (readonly)
Returns the value of attribute rasterizer.
6 7 8 |
# File 'lib/rbgl/engine/context.rb', line 6 def rasterizer @rasterizer end |
Instance Method Details
#aspect_ratio ⇒ Object
66 67 68 |
# File 'lib/rbgl/engine/context.rb', line 66 def aspect_ratio width.to_f / height end |
#bind_index_buffer(buffer) ⇒ Object
26 27 28 |
# File 'lib/rbgl/engine/context.rb', line 26 def bind_index_buffer(buffer) @index_buffer = buffer end |
#bind_pipeline(pipeline) ⇒ Object
18 19 20 |
# File 'lib/rbgl/engine/context.rb', line 18 def bind_pipeline(pipeline) @pipeline = pipeline end |
#bind_vertex_buffer(buffer) ⇒ Object
22 23 24 |
# File 'lib/rbgl/engine/context.rb', line 22 def bind_vertex_buffer(buffer) @vertex_buffer = buffer end |
#clear(color: Larb::Color.black, depth: Float::INFINITY) ⇒ Object
38 39 40 |
# File 'lib/rbgl/engine/context.rb', line 38 def clear(color: Larb::Color.black, depth: Float::INFINITY) @framebuffer.clear(color: color, depth: depth) end |
#draw_arrays(mode, first, count) ⇒ Object
47 48 49 50 |
# File 'lib/rbgl/engine/context.rb', line 47 def draw_arrays(mode, first, count) validate_draw_state! draw_vertices(mode, first...first + count) end |
#draw_elements(mode, count, offset = 0) ⇒ Object
52 53 54 55 56 |
# File 'lib/rbgl/engine/context.rb', line 52 def draw_elements(mode, count, offset = 0) validate_draw_state!(indexed: true) indices = @index_buffer.indices[offset, count] || [] draw_vertices(mode, indices, vertex_cache: {}) end |
#height ⇒ Object
62 63 64 |
# File 'lib/rbgl/engine/context.rb', line 62 def height @framebuffer.height end |
#resize(width:, height:) ⇒ Object
42 43 44 45 |
# File 'lib/rbgl/engine/context.rb', line 42 def resize(width:, height:) @framebuffer.resize(width, height) @rasterizer.resize(width, height) end |
#set_uniform(name, value) ⇒ Object
30 31 32 |
# File 'lib/rbgl/engine/context.rb', line 30 def set_uniform(name, value) @uniforms[name] = value end |
#set_uniforms(hash) ⇒ Object
34 35 36 |
# File 'lib/rbgl/engine/context.rb', line 34 def set_uniforms(hash) hash.each { |k, v| @uniforms[k] = v } end |
#width ⇒ Object
58 59 60 |
# File 'lib/rbgl/engine/context.rb', line 58 def width @framebuffer.width end |