diff --git a/example.rb b/example.rb index bfad3ea..8e54d07 100755 --- a/example.rb +++ b/example.rb @@ -14,6 +14,48 @@ class Example create_window end + def load_shaders + v_id = glCreateShader(GL_VERTEX_SHADER) + glShaderSource(v_id, <<-EOS) + attribute vec2 pos; + varying vec4 pos_i; + + void main() + { + pos_i = vec4(pos, 0, 1); + gl_Position = pos_i; + } + EOS + glCompileShader(v_id) + unless glGetShaderiv(v_id, GL_COMPILE_STATUS) + raise glGetShaderInfoLog(v_id) + end + + f_id = glCreateShader(GL_FRAGMENT_SHADER) + glShaderSource(f_id, <<-EOS) + varying vec4 pos_i; + + void main() + { + gl_FragColor = pos_i; + } + EOS + glCompileShader(f_id) + unless glGetShaderiv(f_id, GL_COMPILE_STATUS) + raise glGetShaderInfoLog(f_id) + end + + p_id = glCreateProgram() + glAttachShader(p_id, v_id) + glAttachShader(p_id, f_id) + glLinkProgram(p_id) + unless glGetProgramiv(p_id, GL_LINK_STATUS) + raise glGetProgramInfoLog(p_id) + end + + glUseProgram(p_id) + end + def create_window if @fullscreen @window.create(VideoMode.get_desktop_mode, TITLE, Style::Fullscreen) @@ -22,6 +64,7 @@ class Example end glClearColor(1, 0.5, 0, 0) + load_shaders end def run