Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
0ea4c1d603 |
36
example.rb
36
example.rb
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
require 'sfml/all'
|
require 'sfml/all'
|
||||||
require 'opengl'
|
require 'opengl'
|
||||||
|
require 'glutil'
|
||||||
|
|
||||||
|
include GLUtil
|
||||||
|
|
||||||
class Example
|
class Example
|
||||||
include SFML
|
include SFML
|
||||||
@ -15,8 +18,7 @@ class Example
|
|||||||
end
|
end
|
||||||
|
|
||||||
def load_shaders
|
def load_shaders
|
||||||
v_id = glCreateShader(GL_VERTEX_SHADER)
|
v_shader = GLShader.new(GL_VERTEX_SHADER, <<-EOS)
|
||||||
glShaderSource(v_id, <<-EOS)
|
|
||||||
uniform vec2 offset;
|
uniform vec2 offset;
|
||||||
uniform vec2 screen_size;
|
uniform vec2 screen_size;
|
||||||
attribute vec2 pos;
|
attribute vec2 pos;
|
||||||
@ -31,13 +33,8 @@ class Example
|
|||||||
gl_Position = pos_i;
|
gl_Position = pos_i;
|
||||||
}
|
}
|
||||||
EOS
|
EOS
|
||||||
glCompileShader(v_id)
|
|
||||||
unless glGetShaderiv(v_id, GL_COMPILE_STATUS)
|
|
||||||
raise glGetShaderInfoLog(v_id)
|
|
||||||
end
|
|
||||||
|
|
||||||
f_id = glCreateShader(GL_FRAGMENT_SHADER)
|
f_shader = GLShader.new(GL_FRAGMENT_SHADER, <<-EOS)
|
||||||
glShaderSource(f_id, <<-EOS)
|
|
||||||
varying vec4 pos_i;
|
varying vec4 pos_i;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
@ -47,22 +44,11 @@ class Example
|
|||||||
0, 1);
|
0, 1);
|
||||||
}
|
}
|
||||||
EOS
|
EOS
|
||||||
glCompileShader(f_id)
|
|
||||||
unless glGetShaderiv(f_id, GL_COMPILE_STATUS)
|
|
||||||
raise glGetShaderInfoLog(f_id)
|
|
||||||
end
|
|
||||||
|
|
||||||
p_id = glCreateProgram()
|
program = GLProgram.new([v_shader, f_shader])
|
||||||
glAttachShader(p_id, v_id)
|
$offset_loc = program.get_uniform_location("offset")
|
||||||
glAttachShader(p_id, f_id)
|
$screen_size_loc = program.get_uniform_location("screen_size")
|
||||||
glLinkProgram(p_id)
|
program.use
|
||||||
unless glGetProgramiv(p_id, GL_LINK_STATUS)
|
|
||||||
raise glGetProgramInfoLog(p_id)
|
|
||||||
end
|
|
||||||
$offset_loc = glGetUniformLocation(p_id, "offset")
|
|
||||||
$screen_size_loc = glGetUniformLocation(p_id, "screen_size")
|
|
||||||
|
|
||||||
glUseProgram(p_id)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_window
|
def create_window
|
||||||
@ -81,9 +67,7 @@ class Example
|
|||||||
-0.02, 0.02,
|
-0.02, 0.02,
|
||||||
-0.02, -0.02,
|
-0.02, -0.02,
|
||||||
0.02, -0.02].pack("f*")
|
0.02, -0.02].pack("f*")
|
||||||
b_id = glGenBuffers(1).first
|
buffer = GLBuffer.new(GL_ARRAY_BUFFER, GL_STATIC_DRAW, quad_attrs, 2 * 4 * 4)
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, b_id);
|
|
||||||
glBufferData(GL_ARRAY_BUFFER, 2 * 4 * 4, quad_attrs, GL_STATIC_DRAW);
|
|
||||||
|
|
||||||
x, y = 0, 0
|
x, y = 0, 0
|
||||||
while @window.open?
|
while @window.open?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user