Class: BeltsOpengl::AssetManager
- Inherits:
-
Object
- Object
- BeltsOpengl::AssetManager
- Defined in:
- lib/belts_opengl/asset_manager.rb
Instance Method Summary collapse
- #build_default_meshes ⇒ Object
- #build_default_shader ⇒ Object
- #get_mesh(key) ⇒ Object
- #get_shader(key) ⇒ Object
-
#initialize ⇒ AssetManager
constructor
A new instance of AssetManager.
Constructor Details
#initialize ⇒ AssetManager
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_meshes ⇒ Object
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_shader ⇒ Object
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 |