add GL.draw_rect()
This commit is contained in:
parent
e2608b1d29
commit
ab4c3e322f
22
src/GL.cc
22
src/GL.cc
@ -22,9 +22,31 @@ static VALUE ruby_module;
|
||||
static GLBufferRef rect_buffer;
|
||||
static GLProgram * programs[PROGRAM_COUNT];
|
||||
|
||||
static VALUE GL_draw_rect(VALUE klass,
|
||||
VALUE x, VALUE y, VALUE width, VALUE height,
|
||||
VALUE r, VALUE g, VALUE b, VALUE a)
|
||||
{
|
||||
glUseProgram(programs[PROGRAM_RECT]->id);
|
||||
glUniform2i(programs[PROGRAM_RECT]->uniforms[UNIFORM_POSITION], FIX2INT(x), FIX2INT(y));
|
||||
glUniform2i(programs[PROGRAM_RECT]->uniforms[UNIFORM_SIZE], FIX2INT(width), FIX2INT(height));
|
||||
glUniform4f(programs[PROGRAM_RECT]->uniforms[UNIFORM_COLOR],
|
||||
RFLOAT_VALUE(r),
|
||||
RFLOAT_VALUE(g),
|
||||
RFLOAT_VALUE(b),
|
||||
RFLOAT_VALUE(a));
|
||||
rect_buffer->bind();
|
||||
glEnableVertexAttribArray(0);
|
||||
glVertexAttribIPointer(0, 2, GL_INT, 0, 0);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
void GL_Init()
|
||||
{
|
||||
ruby_module = rb_define_module("GL");
|
||||
rb_define_singleton_method(ruby_module, "draw_rect",
|
||||
(VALUE(*)(...))GL_draw_rect, 4);
|
||||
}
|
||||
|
||||
static void load_gl_buffers()
|
||||
|
Loading…
x
Reference in New Issue
Block a user