Class: BeltsOpengl::AssetManager

Inherits:
Object
  • Object
show all
Defined in:
lib/belts_opengl/asset_manager.rb

Instance Method Summary collapse

Constructor Details

#initializeAssetManager

Returns a new instance of AssetManager.



3
4
5
6
7
8
9
# File 'lib/belts_opengl/asset_manager.rb', line 3

def initialize
  @shaders = {}
  @meshes = {}

  build_default_shader
  build_default_meshes
end

Instance Method Details

#build_default_meshesObject



43
44
45
46
47
48
49
50
51
# File 'lib/belts_opengl/asset_manager.rb', line 43

def build_default_meshes
  default_meshes = {
    square: Assets::Meshes::Square.new,
    triangle: Assets::Meshes::Triangle.new,
    cube: Assets::Meshes::Cube.new
  }

  @meshes.merge!(default_meshes)
end

#build_default_shaderObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/belts_opengl/asset_manager.rb', line 19

def build_default_shader
  vert_shader = GL.CreateShader(GL::VERTEX_SHADER)
  vpath = File.join(BeltsOpengl::root, 'lib/belts_opengl/assets/shaders/base.vert')
  vcontent = [File.read(vpath)].pack('p')
  vsize = [File.size(vpath)].pack('I')
  GL.ShaderSource(vert_shader, 1, vcontent, vsize)
  GL.CompileShader(vert_shader)

  frag_shader = GL.CreateShader(GL::FRAGMENT_SHADER)
  fpath = File.join(BeltsOpengl::root, 'lib/belts_opengl/assets/shaders/base.frag')
  fcontent = [File.read(fpath)].pack('p')
  fsize = [File.size(fpath)].pack('I')
  GL.ShaderSource(frag_shader, 1, fcontent, fsize)
  GL.CompileShader(frag_shader)

  @shaders[:default] = GL.CreateProgram()
  GL.AttachShader(@shaders[:default], vert_shader)
  GL.AttachShader(@shaders[:default], frag_shader)
  GL.LinkProgram(@shaders[:default])

  GL.DeleteShader(vert_shader)
  GL.DeleteShader(frag_shader)
end

#get_mesh(key) ⇒ Object



15
16
17
# File 'lib/belts_opengl/asset_manager.rb', line 15

def get_mesh(key)
  @meshes[key]
end

#get_shader(key) ⇒ Object



11
12
13
# File 'lib/belts_opengl/asset_manager.rb', line 11

def get_shader(key)
  @shaders[key]
end