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