Sha256: f6767064efb9934b39b7e392d953e5852f32b75cd053ab1532db14c630edb14d
Contents?: true
Size: 1.37 KB
Versions: 3
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module Engine class Material attr_reader :shader def initialize(shader) @shader = shader end def set_mat4(name, value) mat4s[name] = value end def set_vec3(name, value) vec3s[name] = value end def set_vec4(name, value) vec4s[name] = value end def set_float(name, value) floats[name] = value end def set_texture(name, value) textures[name] = value end def update_shader shader.use mat4s.each do |name, value| shader.set_mat4(name, value) end vec3s.each do |name, value| shader.set_vec3(name, value) end vec4s.each do |name, value| shader.set_vec4(name, value) end floats.each do |name, value| shader.set_float(name, value) end textures.each.with_index do |(name, value), slot| GL.ActiveTexture(Object.const_get("GL::TEXTURE#{slot}")) if value GL.BindTexture(GL::TEXTURE_2D, value) else GL.BindTexture(GL::TEXTURE_2D, 0) end shader.set_int(name, slot) end end private def mat4s @mat4s ||= {} end def vec3s @vec3s ||= {} end def vec4s @vec4s ||= {} end def floats @floats ||= {} end def textures @textures ||= {} end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby_rpg-0.0.4 | lib/engine/material.rb |
ruby_rpg-0.0.3 | lib/engine/material.rb |
ruby_rpg-0.0.2 | lib/engine/material.rb |