diff options
Diffstat (limited to 'src/libjin/graphics/shaders/je_shader.cpp')
-rw-r--r-- | src/libjin/graphics/shaders/je_shader.cpp | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp index f752e99..16627d5 100644 --- a/src/libjin/graphics/shaders/je_shader.cpp +++ b/src/libjin/graphics/shaders/je_shader.cpp @@ -240,25 +240,36 @@ namespace JinEngine glUniformMatrix4fv(loc, 1, GL_FALSE, mat4->getElements()); } - void Shader::uploadVertices(int n, GLenum type, GLsizei stride, const GLvoid * pointers) + void Shader::uploadVertices(int n, GLenum type, GLsizei stride, const GLvoid * pointers, GLboolean normalized) { - GLint loc = glGetAttribLocation(mPID, SHADER_VERTEX_COORDS); - glEnableVertexAttribArray(0); - glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers); + uploadAttribute(SHADER_VERTEX_COORDS, n, type, stride, pointers, normalized); } - void Shader::uploadUV(int n, GLenum type, GLsizei stride, const GLvoid * pointers) + void Shader::uploadUV(int n, GLenum type, GLsizei stride, const GLvoid * pointers, GLboolean normalized) { - GLint loc = glGetAttribLocation(mPID, SHADER_TEXTURE_COORDS); - glEnableVertexAttribArray(1); - glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers); + uploadAttribute(SHADER_TEXTURE_COORDS, n, type, stride, pointers, normalized); } - void Shader::uploadAttribute(const String& name, int n, GLenum type, GLsizei stride, const GLvoid * pointers) + void Shader::uploadColor(int n, GLenum type, GLsizei stride, const GLvoid * pointers, GLboolean normalized) + { + uploadAttribute(SHADER_VERTEX_COLOR, n, type, stride, pointers, normalized); + } + + void Shader::beginUploadAttributes() + { + mAttributeIndex = 0; + } + + void Shader::endUploadAttributes() + { + mAttributeIndex = 0; + } + + void Shader::uploadAttribute(const String& name, int n, GLenum type, GLsizei stride, const GLvoid * pointers, GLboolean normalized) { GLint loc = glGetAttribLocation(mPID, name); - glEnableVertexAttribArray(1); - glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers); + glEnableVertexAttribArray(mAttributeIndex++); + glVertexAttribPointer(loc, n, type, normalized, stride, pointers); } } // namespace Shaders |