add load_shaders method

This commit is contained in:
Josh Holtrop 2013-06-10 22:18:06 -04:00
parent 2c9c89e16b
commit 10faaa37b6

View File

@ -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