aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLawrence E. Bakst <leb@me.com>2014-05-04 12:52:01 -0400
committerLawrence E. Bakst <leb@me.com>2014-05-04 12:52:01 -0400
commitc1f913622e339da2653fb036f785b53a854f19fc (patch)
treee1ac4e736ad4260d3275879a4567011c266ccb1d
parent8563d2de6c69024af38b000993b02268388eccb4 (diff)
downloadgl-c1f913622e339da2653fb036f785b53a854f19fc.tar.gz
added function GetActiveAttrib
-rw-r--r--program.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/program.go b/program.go
index 9dcef76..a7e6661 100644
--- a/program.go
+++ b/program.go
@@ -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)