funfriend/src/gl.cr

27 lines
883 B
Crystal

module Funfriend::GL
extend self
def buffer_data_array(target : Enum, data : Array, usage_hint : Buffer::UsageHint)
data_size = data.reduce(0) {|memo, i| memo + sizeof(typeof(i))}
LibGL.buffer_data(target, data_size, Pointer(Void).new(0), usage_hint)
offset = 0
data.each do |byte|
size = sizeof(typeof(byte))
LibGL.buffer_sub_data(target, offset, size, pointerof(byte))
offset += size
end
end
def shader(fragment_filename : String, vertex_filename : String) : Program
vertex_shader_source = FileStorage.get(vertex_filename).gets_to_end
fragment_shader_source = FileStorage.get(fragment_filename).gets_to_end
vertex_shader = VertexShader.create(vertex_shader_source)
fragment_shader = FragmentShader.create(fragment_shader_source)
shaders = {vertex_shader, fragment_shader}
Program.create(shaders)
end
end