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 GLBufferRef rect_buffer;
|
||||||
static GLProgram * programs[PROGRAM_COUNT];
|
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()
|
void GL_Init()
|
||||||
{
|
{
|
||||||
ruby_module = rb_define_module("GL");
|
ruby_module = rb_define_module("GL");
|
||||||
|
rb_define_singleton_method(ruby_module, "draw_rect",
|
||||||
|
(VALUE(*)(...))GL_draw_rect, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void load_gl_buffers()
|
static void load_gl_buffers()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user