diff options
author | Lawrence E. Bakst <leb@me.com> | 2014-05-04 12:52:01 -0400 |
---|---|---|
committer | Lawrence E. Bakst <leb@me.com> | 2014-05-04 12:52:01 -0400 |
commit | c1f913622e339da2653fb036f785b53a854f19fc (patch) | |
tree | e1ac4e736ad4260d3275879a4567011c266ccb1d | |
parent | 8563d2de6c69024af38b000993b02268388eccb4 (diff) | |
download | gl-c1f913622e339da2653fb036f785b53a854f19fc.tar.gz |
added function GetActiveAttrib
-rw-r--r-- | program.go | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -149,6 +149,27 @@ func (program Program) UniformBlockBinding(index UniformBlockIndex, binding uint C.glUniformBlockBinding(C.GLuint(program), C.GLuint(index), C.GLuint(binding)) } +// glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +func (program Program) GetActiveAttrib(index int) ( + Size int, Type GLenum, Name string) { + // Maximum length of active uniform name in program + bufSize := program.Get(ACTIVE_ATTRIBUTE_MAX_LENGTH) + nameBuf := C.malloc(C.size_t(bufSize)) + defer C.free(nameBuf) + var size C.GLint + C.glGetActiveAttrib( + C.GLuint(program), + C.GLuint(index), + C.GLsizei(bufSize), + nil, // length == len(Name) + &size, + (*C.GLenum)(&Type), + (*C.GLchar)(nameBuf)) + Name = C.GoString((*C.char)(nameBuf)) + Size = int(size) + return +} + func (program Program) GetAttribLocation(name string) AttribLocation { cname := glString(name) |