From 864c5c2930ea914ed7fa532844865918156e84a3 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 22 Jul 2014 18:59:32 -0400 Subject: [PATCH] add GLProgram#bind_attribute --- src/GLProgram.cc | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/GLProgram.cc b/src/GLProgram.cc index 94c7dc8..b59eae2 100644 --- a/src/GLProgram.cc +++ b/src/GLProgram.cc @@ -47,23 +47,26 @@ static VALUE GLProgram_attach_shader(VALUE self, VALUE gl_shader) return Qnil; } +static VALUE GLProgram_bind_attribute(VALUE self, VALUE attr_name, VALUE index) +{ + GLProgram * glprogram; + Data_Get_Struct(self, GLProgram, glprogram); + attr_name = rb_funcall(attr_name, rb_intern("to_s"), 0); + const char * attr_name_cstr = StringValueCStr(attr_name); + glBindAttribLocation(glprogram->id, NUM2UINT(index), attr_name_cstr); + + return Qnil; +} + void GLProgram_Init() { ruby_class = rb_define_class("GLProgram", rb_cObject); rb_define_singleton_method(ruby_class, "new", (VALUE(*)(...))GLProgram_new, -1); rb_define_method(ruby_class, "attach_shader", (VALUE(*)(...))GLProgram_attach_shader, 1); + rb_define_method(ruby_class, "bind_attribute", (VALUE(*)(...))GLProgram_bind_attribute, 2); } #if 0 -GLProgram & GLProgram::bind_attribute(const char * attribute, GLuint index) -{ - if (m_id > 0u) - { - glBindAttribLocation(m_id, index, attribute); - } - return *this; -} - bool GLProgram::link() { if (m_id == 0u)