diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libjin/graphics/fonts/je_texture_font.cpp | 4 | ||||
-rw-r--r-- | src/libjin/graphics/fonts/je_ttf.cpp | 4 | ||||
-rw-r--r-- | src/libjin/graphics/je_graphic.cpp | 8 | ||||
-rw-r--r-- | src/libjin/graphics/je_shapes.cpp | 10 | ||||
-rw-r--r-- | src/libjin/graphics/shaders/je_shader.cpp | 11 | ||||
-rw-r--r-- | src/libjin/graphics/shaders/je_shader.h | 14 | ||||
-rw-r--r-- | src/libjin/math/je_matrix.h | 1 |
7 files changed, 35 insertions, 17 deletions
diff --git a/src/libjin/graphics/fonts/je_texture_font.cpp b/src/libjin/graphics/fonts/je_texture_font.cpp index 4f2378b..4fd1af1 100644 --- a/src/libjin/graphics/fonts/je_texture_font.cpp +++ b/src/libjin/graphics/fonts/je_texture_font.cpp @@ -281,8 +281,8 @@ namespace JinEngine for (int i = 0; i < glyphinfolist.size(); ++i) { const GlyphArrayDrawInfo& info = glyphinfolist[i]; - shader->setVertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x); - shader->setUVPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u); + shader->uploadVertices(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x); + shader->uploadUV(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u); gl.bindTexture(info.texture); gl.drawArrays(GL_QUADS, 0, info.count); gl.bindTexture(0); diff --git a/src/libjin/graphics/fonts/je_ttf.cpp b/src/libjin/graphics/fonts/je_ttf.cpp index 40008d3..29bc834 100644 --- a/src/libjin/graphics/fonts/je_ttf.cpp +++ b/src/libjin/graphics/fonts/je_ttf.cpp @@ -300,8 +300,8 @@ namespace JinEngine for (int i = 0; i < glyphinfolist.size(); ++i) { const GlyphArrayDrawInfo& info = glyphinfolist[i]; - shader->setVertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x); - shader->setUVPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u); + shader->uploadVertices(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x); + shader->uploadUV(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u); gl.bindTexture(info.texture); gl.drawArrays(GL_QUADS, 0, info.count); gl.bindTexture(0); diff --git a/src/libjin/graphics/je_graphic.cpp b/src/libjin/graphics/je_graphic.cpp index ae15afe..a0c2257 100644 --- a/src/libjin/graphics/je_graphic.cpp +++ b/src/libjin/graphics/je_graphic.cpp @@ -73,8 +73,8 @@ namespace JinEngine Shader* shader = gl.getShader(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); - shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords); - shader->setUVPointer(2, GL_FLOAT, 0, textureCoords); + shader->uploadVertices(2, GL_FLOAT, 0, vertexCoords); + shader->uploadUV(2, GL_FLOAT, 0, textureCoords); gl.bindTexture(getGLTexture()); gl.drawArrays(GL_QUADS, 0, 4); @@ -106,8 +106,8 @@ namespace JinEngine Shader* shader = gl.getShader(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); - shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords); - shader->setUVPointer(2, GL_FLOAT, 0, textureCoords); + shader->uploadVertices(2, GL_FLOAT, 0, vertexCoords); + shader->uploadUV(2, GL_FLOAT, 0, textureCoords); gl.bindTexture(getGLTexture()); gl.drawArrays(GL_QUADS, 0, 4); diff --git a/src/libjin/graphics/je_shapes.cpp b/src/libjin/graphics/je_shapes.cpp index 02c007d..96a4f76 100644 --- a/src/libjin/graphics/je_shapes.cpp +++ b/src/libjin/graphics/je_shapes.cpp @@ -23,7 +23,7 @@ namespace JinEngine float verts[] = { x + 0.5f , y + 0.5f }; Shader* shader = gl.getShader(); - shader->setVertexPointer(2, GL_FLOAT, 0, verts); + shader->uploadVertices(2, GL_FLOAT, 0, verts); Matrix modelMatrix = gl.getModelViewMatrix(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); @@ -34,7 +34,7 @@ namespace JinEngine void points(int n, GLshort* p) { Shader* shader = gl.getShader(); - shader->setVertexPointer(2, GL_SHORT, 0, p); + shader->uploadVertices(2, GL_SHORT, 0, p); Matrix modelMatrix = gl.getModelViewMatrix(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); @@ -50,7 +50,7 @@ namespace JinEngine }; Shader* shader = gl.getShader(); - shader->setVertexPointer(2, GL_FLOAT, 0, verts); + shader->uploadVertices(2, GL_FLOAT, 0, verts); Matrix modelMatrix = gl.getModelViewMatrix(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); @@ -101,7 +101,7 @@ namespace JinEngine Matrix modelMatrix = gl.getModelViewMatrix(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); - shader->setVertexPointer(2, GL_FLOAT, 0, p); + shader->uploadVertices(2, GL_FLOAT, 0, p); glDrawArrays(GL_LINE_LOOP, 0, count); } @@ -118,7 +118,7 @@ namespace JinEngine Matrix modelMatrix = gl.getModelViewMatrix(); shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix); shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); - shader->setVertexPointer(2, GL_FLOAT, 0, p); + shader->uploadVertices(2, GL_FLOAT, 0, p); glDrawArrays(GL_POLYGON, 0, count); } diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp index b7a4bba..8fbb133 100644 --- a/src/libjin/graphics/shaders/je_shader.cpp +++ b/src/libjin/graphics/shaders/je_shader.cpp @@ -252,20 +252,27 @@ if (success == GL_FALSE) \ glUniformMatrix4fv(loc, 1, GL_FALSE, mat4->getElements()); } - void Shader::setVertexPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers) + void Shader::uploadVertices(int n, GLenum type, GLsizei stride, const GLvoid * pointers) { GLint loc = glGetAttribLocation(mPID, SHADER_VERTEX_COORDS); glEnableVertexAttribArray(0); glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers); } - void Shader::setUVPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers) + void Shader::uploadUV(int n, GLenum type, GLsizei stride, const GLvoid * pointers) { GLint loc = glGetAttribLocation(mPID, SHADER_TEXTURE_COORDS); glEnableVertexAttribArray(1); glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers); } + void Shader::uploadAttribute(const String& name, int n, GLenum type, GLsizei stride, const GLvoid * pointers) + { + GLint loc = glGetAttribLocation(mPID, name); + glEnableVertexAttribArray(1); + glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers); + } + } // namespace Shaders } // namespace Graphics } // namespace JinEngine diff --git a/src/libjin/graphics/shaders/je_shader.h b/src/libjin/graphics/shaders/je_shader.h index a92e206..9056d51 100644 --- a/src/libjin/graphics/shaders/je_shader.h +++ b/src/libjin/graphics/shaders/je_shader.h @@ -9,6 +9,8 @@ #include "GLee/GLee.h" +#include "../../common/je_string.h" + #include "../je_color.h" #include "../je_texture.h" #include "../je_canvas.h" @@ -130,7 +132,7 @@ namespace JinEngine /// @param stride Byte offset between consecutive generic vertex attributes. /// @param pointers Pointer to the first component of the first generic vertex attribute in the array. /// - void setVertexPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers); + void uploadVertices(int n, GLenum type, GLsizei stride, const GLvoid * pointers); /// /// Set texture UV coordinates. @@ -140,8 +142,16 @@ namespace JinEngine /// @param stride Byte offset between consecutive generic vertex attributes. /// @param pointers Pointer to the first component of the first generic vertex attribute in the array. /// - void setUVPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers); + void uploadUV(int n, GLenum type, GLsizei stride, const GLvoid * pointers); + + /// + /// Set attribute. + /// + void uploadAttribute(const String& name, int n, GLenum type, GLsizei stride, const GLvoid * pointers); + /// + /// Program ID. + /// inline GLuint getGLProgramID() { return mPID; }; protected: diff --git a/src/libjin/math/je_matrix.h b/src/libjin/math/je_matrix.h index f35b88b..65f080b 100644 --- a/src/libjin/math/je_matrix.h +++ b/src/libjin/math/je_matrix.h @@ -12,6 +12,7 @@ namespace JinEngine float x, y; float s, t; }; + /// /// This class is the basis for all transformations in LOVE. Althought not /// really needed for 2D, it contains 4x4 elements to be compatible with |