Class: RBGL::Engine::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/rbgl/engine/context.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#framebufferObject (readonly)

Returns the value of attribute framebuffer.



6
7
8
# File 'lib/rbgl/engine/context.rb', line 6

def framebuffer
  @framebuffer
end

#rasterizerObject (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_ratioObject



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

#heightObject



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

#widthObject



58
59
60
# File 'lib/rbgl/engine/context.rb', line 58

def width
  @framebuffer.width
end