aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Waller <p@pwaller.net>2014-05-04 18:14:39 +0100
committerPeter Waller <p@pwaller.net>2014-05-04 18:14:39 +0100
commit3e73dcc07b6b428cac0fbfa12761b8daf6be6228 (patch)
tree172686268b820e3c18d9929d70a6ca2a83d15c7a
parent38537f1ab9406d0349dde5dc4abc32c3926d3e80 (diff)
parentc1f913622e339da2653fb036f785b53a854f19fc (diff)
downloadgl-3e73dcc07b6b428cac0fbfa12761b8daf6be6228.tar.gz
Merge pull request #149 from tildeleb/master
added function GetActiveAttrib
-rw-r--r--program.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/program.go b/program.go
index 0bb67a0..4bcd1c1 100644
--- a/program.go
+++ b/program.go
@@ -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)