diff options
author | Peter Waller <p@pwaller.net> | 2014-05-04 18:14:39 +0100 |
---|---|---|
committer | Peter Waller <p@pwaller.net> | 2014-05-04 18:14:39 +0100 |
commit | 3e73dcc07b6b428cac0fbfa12761b8daf6be6228 (patch) | |
tree | 172686268b820e3c18d9929d70a6ca2a83d15c7a | |
parent | 38537f1ab9406d0349dde5dc4abc32c3926d3e80 (diff) | |
parent | c1f913622e339da2653fb036f785b53a854f19fc (diff) | |
download | gl-3e73dcc07b6b428cac0fbfa12761b8daf6be6228.tar.gz |
Merge pull request #149 from tildeleb/master
added function GetActiveAttrib
-rw-r--r-- | program.go | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -152,6 +152,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) |