aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libjin/graphics/fonts/je_texture_font.cpp4
-rw-r--r--src/libjin/graphics/fonts/je_ttf.cpp4
-rw-r--r--src/libjin/graphics/je_graphic.cpp8
-rw-r--r--src/libjin/graphics/je_shapes.cpp10
-rw-r--r--src/libjin/graphics/shaders/je_shader.cpp11
-rw-r--r--src/libjin/graphics/shaders/je_shader.h14
-rw-r--r--src/libjin/math/je_matrix.h1
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