module Roglew::RenderContextExtension::ClassMethods
Public Instance Methods
def_delete(name, function)
click to toggle source
# File lib/roglew/render_context_extension.rb, line 14 def def_delete(name, function) checks_current define_method "delete_#{name}", ->(ids) do raise Roglew::RenderContext::ContextError, 'render handle not current' unless @rh.current? p = FFI::MemoryPointer.new(:uint, ids.count) p.write_array_of_uint(ids) send(function, ids.count, p) nil end end
def_gen(name, function)
click to toggle source
# File lib/roglew/render_context_extension.rb, line 4 def def_gen(name, function) checks_current define_method "gen_#{name}", ->(count = 1) do p = FFI::MemoryPointer.new(:uint, count) @rh.send(function, count, p) ids = p.read_array_of_uint(count) count == 1 ? ids[0] : ids end end
def_object(name)
click to toggle source
# File lib/roglew/render_context_extension.rb, line 25 def def_object(name) def_gen(name.to_s.snakecase, "glGen#{name}") def_delete(name.to_s.snakecase, "glDelete#{name}") end
Private Instance Methods
checks_current(msg = 'render handle not current')
click to toggle source
# File lib/roglew/render_context_extension.rb, line 31 def checks_current(msg = 'render handle not current') @checks_current = msg end
method_added(name)
click to toggle source
# File lib/roglew/render_context_extension.rb, line 35 def method_added(name) return unless @checks_current msg = remove_instance_variable :@checks_current m = instance_method(name) define_method(name) do |*args, &block| raise RenderContextError, msg unless @rh.current? m.bind(self).(*args, &block) end end