Module: OpenGLDebug

Defined in:
lib/mittsu/renderers/opengl/opengl_debug.rb

Defined Under Namespace

Modules: OpenGLProxy Classes: DebugShader

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.load_libObject



34
35
36
# File 'lib/mittsu/renderers/opengl/opengl_debug.rb', line 34

def self.load_lib
  OpenGL.load_lib
end

Instance Method Details

#call_debug_method(m, *args) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/mittsu/renderers/opengl/opengl_debug.rb', line 42

def call_debug_method m, *args
  r = OpenGLProxy.send(m, *args)
  if m.to_s.start_with?('glUniform')
    uniform_name = @@current_shader.get_uniform_name(args.first)
    call = "#{m}('#{uniform_name}',#{args[1..-1].map { |s| s.to_s[0..20] }.join(', ')})"
  else
    call = "#{m}(#{args.map { |s| s.to_s[0..20] }.join(', ')})"
  end
  ret = r.nil? ? '' : " => #{r}"
  puts "#{call}#{ret} (#{caller[0]})"
  e = OpenGLProxy.glGetError
  raise "ERROR: #{m} => #{ERROR_STRINGS[e]}" unless e == OpenGL::GL_NO_ERROR
  r
end

#glCreateProgramObject



63
64
65
66
67
68
# File 'lib/mittsu/renderers/opengl/opengl_debug.rb', line 63

def glCreateProgram
  call_debug_method(:glCreateProgram).tap do |handle|
    @@shaders ||= {}
    @@shaders[handle] = DebugShader.new(handle)
  end
end

#glGetUniformLocation(program, name) ⇒ Object



75
76
77
78
79
# File 'lib/mittsu/renderers/opengl/opengl_debug.rb', line 75

def glGetUniformLocation(program, name)
  call_debug_method(:glGetUniformLocation, program, name).tap do |handle|
    @@shaders[program].set_uniform(handle, name)
  end
end

#glUseProgram(handle) ⇒ Object



70
71
72
73
# File 'lib/mittsu/renderers/opengl/opengl_debug.rb', line 70

def glUseProgram(handle)
  @@current_shader = @@shaders[handle]
  call_debug_method(:glUseProgram, handle)
end