module GL_VERSION_2_0::RenderContext

Public Instance Methods

create_program(shaders = nil) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 195
def create_program(shaders = nil)
  program = Roglew::ShaderProgram.new(@rh)
  return program unless shaders
  shaders = case shaders
    when Hash
      shaders.map do |type, source|
        type = type.is_a?(Integer) ? type : Roglew::GL.const_get("#{type.to_s.upcase}_SHADER")
        create_shader(type, source)
      end
    when Array
      shaders
    else
      raise ArgumentError, "It must be Hash or Array. Given: #{shaders.class}"
  end
  program.attach(*shaders)
  program.link
  program
end
create_shader(*args) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 214
def create_shader(*args)
  Roglew::Shader.new(@rh, *args)
end
get_program(program, pname) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 218
def get_program(program, pname)
  p = FFI::MemoryPointer.new(:int)
  @rh.glGetProgramiv(program, pname, p)
  result = p.read_int
  [Roglew::GL::DELETE_STATUS, Roglew::GL::COMPILE_STATUS].include?(pname) ? result == Roglew::GL::TRUE : result
end
get_program_info_log(program) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 225
def get_program_info_log(program)
  length = get_program(program, Roglew::GL::INFO_LOG_LENGTH)
  p = FFI::MemoryPointer.new(:char, length)
  @rh.glGetProgramInfoLog(program, length, nil, p)
  p.read_string
end
get_shader(shader, pname) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 232
def get_shader(shader, pname)
  p = FFI::MemoryPointer.new(:int)
  @rh.glGetShaderiv(shader, pname, p)
  result = p.read_int
  [Roglew::GL::DELETE_STATUS, Roglew::GL::COMPILE_STATUS].include?(pname) ? result == Roglew::GL::TRUE : result
end
get_shader_info_log(shader) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 239
def get_shader_info_log(shader)
  length = get_shader(shader, Roglew::GL::INFO_LOG_LENGTH)
  p = FFI::MemoryPointer.new(:char, length)
  @rh.glGetShaderInfoLog(shader, length, nil, p)
  p.read_string
end
shader_sources(shader, *srcs) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 246
def shader_sources(shader, *srcs)
  ps = FFI::MemoryPointer.new(:string, srcs.length)
  ps.write_array_of_pointer(srcs.map { |src| FFI::MemoryPointer.from_string(src) })
  pl = FFI::MemoryPointer.new(:int, srcs.length)
  pl.write_array_of_int(srcs.map { |src| src.length })
  @rh.glShaderSource(shader, srcs.length, ps, pl)
end

Private Instance Methods

map_type(type) click to toggle source
# File lib/roglew/extensions/GL_VERSION_2_0.rb, line 255
def map_type(type)

end