diff options
author | Peter Waller <p@pwaller.net> | 2014-04-12 16:53:03 +0100 |
---|---|---|
committer | Peter Waller <p@pwaller.net> | 2014-04-12 16:53:03 +0100 |
commit | 088c295803191c36c19e5a40b2ed670f4f66dadf (patch) | |
tree | 0623202279ff83cc33a87248852d6d89e83ed02b | |
parent | 2f9b7c7aef3ec1e5e1a9b44d04f59de96f027675 (diff) | |
parent | f6f02bb7e574506596ae42e066fcfce3d9fde314 (diff) | |
download | gl-088c295803191c36c19e5a40b2ed670f4f66dadf.tar.gz |
Merge pull request #132 from Ferguzz/master
Support for multiple string inputs to shader.Source().
-rw-r--r-- | shader.go | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -12,6 +12,7 @@ package gl // } // import "C" +import "unsafe" // Shader @@ -53,14 +54,19 @@ func (shader Shader) GetSource() string { return "" } -func (shader Shader) Source(source string) { +func (shader Shader) Source(source ...string) { + count := C.GLsizei(len(source)) + cstrings := make([]*C.GLchar, count) + length := make([]C.GLint, count) - csource := glString(source) - defer freeString(csource) - - var one C.GLint = C.GLint(len(source)) + for i, s := range source { + csource := glString(s) + cstrings[i] = csource + length[i] = C.GLint(len(s)) + defer freeString(csource) + } - C.glShaderSource(C.GLuint(shader), 1, &csource, &one) + C.glShaderSource(C.GLuint(shader), count, (**_Ctype_GLchar)(unsafe.Pointer(&cstrings[0])), (*_Ctype_GLint)(unsafe.Pointer(&length[0]))) } func (shader Shader) Compile() { C.glCompileShader(C.GLuint(shader)) } |