aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-11-16 21:29:52 +0800
committerchai <chaifix@163.com>2018-11-16 21:29:52 +0800
commita4db0e0622a3764d090a8c2ecf8bd5b56442ccef (patch)
tree7073a0bfb5dd7f83162fc62eb67d3c5a6168cf9e
parent0056e468d9c3291443d87bfc05441e375a315433 (diff)
*更新渲染minimal
-rw-r--r--bin/Jin.exebin2499584 -> 2265600 bytes
-rw-r--r--bin/SDL2.dllbin1279488 -> 1242112 bytes
-rw-r--r--bin/game/main.lua8
-rw-r--r--bin/jin.exebin2499584 -> 2265600 bytes
-rw-r--r--src/3rdparty/buildvm/buildvm.exebin123392 -> 121856 bytes
-rw-r--r--src/3rdparty/minilua/minilua.exebin219136 -> 209920 bytes
-rw-r--r--src/libjin/Graphics/fonts/je_texture_font.cpp6
-rw-r--r--src/libjin/Graphics/fonts/je_ttf.cpp6
-rw-r--r--src/libjin/Graphics/je_canvas.cpp4
-rw-r--r--src/libjin/Graphics/je_gl.cpp56
-rw-r--r--src/libjin/Graphics/je_gl.h42
-rw-r--r--src/libjin/Graphics/je_graphic.cpp12
-rw-r--r--src/libjin/Graphics/je_shapes.cpp30
-rw-r--r--src/libjin/Graphics/shaders/je_base.shader.h6
14 files changed, 96 insertions, 74 deletions
diff --git a/bin/Jin.exe b/bin/Jin.exe
index 0645634..7009d01 100644
--- a/bin/Jin.exe
+++ b/bin/Jin.exe
Binary files differ
diff --git a/bin/SDL2.dll b/bin/SDL2.dll
index dfc7d55..c381d42 100644
--- a/bin/SDL2.dll
+++ b/bin/SDL2.dll
Binary files differ
diff --git a/bin/game/main.lua b/bin/game/main.lua
index ce22f46..ca260d7 100644
--- a/bin/game/main.lua
+++ b/bin/game/main.lua
@@ -24,6 +24,8 @@ Vertex vert(Vertex v)
#FRAGMENT_SHADER
Color frag(Color col, Texture tex, Vertex v)
{
+ if(v.xy.x > 30)
+ return Color(1, 0, 0, 1);
Color c = texel(tex, v.uv);
return c;
}
@@ -40,7 +42,7 @@ local spr = nil
local bitmap = nil
function jin.core.onLoad()
bitmap = jin.graphics.newBitmap(128, 128, function(w, h, x, y)
- return {255*math.sin(x/w),255 - 255*math.cos(y/w),0,255}
+ return {255*math.sin(x/w),255 - 255,255*math.cos(y/w),255}
end)
shader_program = jin.graphics.newShader(shader)
shader_program2 = jin.graphics.newShader(shader2)
@@ -69,8 +71,8 @@ function jin.core.onLoad()
--timer:cancel(h)
end, h)
jin.graphics.pushMatrix()
- --jin.graphics.translate(100, 0)
- jin.graphics.rotate(0.2)
+ jin.graphics.translate(10, 0)
+ --jin.graphics.rotate(0.2)
end
local stop = false
diff --git a/bin/jin.exe b/bin/jin.exe
index 0645634..7009d01 100644
--- a/bin/jin.exe
+++ b/bin/jin.exe
Binary files differ
diff --git a/src/3rdparty/buildvm/buildvm.exe b/src/3rdparty/buildvm/buildvm.exe
index b77cd0a..0990afe 100644
--- a/src/3rdparty/buildvm/buildvm.exe
+++ b/src/3rdparty/buildvm/buildvm.exe
Binary files differ
diff --git a/src/3rdparty/minilua/minilua.exe b/src/3rdparty/minilua/minilua.exe
index 6115080..9a56818 100644
--- a/src/3rdparty/minilua/minilua.exe
+++ b/src/3rdparty/minilua/minilua.exe
Binary files differ
diff --git a/src/libjin/Graphics/fonts/je_texture_font.cpp b/src/libjin/Graphics/fonts/je_texture_font.cpp
index 6875e30..868188e 100644
--- a/src/libjin/Graphics/fonts/je_texture_font.cpp
+++ b/src/libjin/Graphics/fonts/je_texture_font.cpp
@@ -220,9 +220,9 @@ namespace JinEngine
Shader* shader = Shader::getCurrentShader();
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
- static Matrix modelMatrix = gl.getModelMatrix(x, y, 0, 1, 1, 0, 0);
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix(x, y, 0, 1, 1, 0, 0);
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
for (int i = 0; i < glyphinfolist.size(); ++i)
{
const GlyphArrayDrawInfo& info = glyphinfolist[i];
diff --git a/src/libjin/Graphics/fonts/je_ttf.cpp b/src/libjin/Graphics/fonts/je_ttf.cpp
index 1083281..3cbb28b 100644
--- a/src/libjin/Graphics/fonts/je_ttf.cpp
+++ b/src/libjin/Graphics/fonts/je_ttf.cpp
@@ -308,9 +308,9 @@ namespace JinEngine
Shader* shader = Shader::getCurrentShader();
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
- static Matrix modelMatrix = gl.getModelMatrix(x, y, 0, 1, 1, 0, 0);
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix(x, y, 0, 1, 1, 0, 0);
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
for (int i = 0; i < glyphinfolist.size(); ++i)
{
const GlyphArrayDrawInfo& info = glyphinfolist[i];
diff --git a/src/libjin/Graphics/je_canvas.cpp b/src/libjin/Graphics/je_canvas.cpp
index 7c8e849..491bf6b 100644
--- a/src/libjin/Graphics/je_canvas.cpp
+++ b/src/libjin/Graphics/je_canvas.cpp
@@ -68,7 +68,7 @@ namespace JinEngine
int h = canvas->getHeight();
// Set view port to canvas.
glViewport(0, 0, w, h);
- gl.ProjectionMatrix.setOrtho(0, w, 0, h, -1, 1);
+ gl.setProjectionMatrix(0, w, 0, h, -1, 1);
}
/**
@@ -91,7 +91,7 @@ namespace JinEngine
/* set viewport on screen */
glViewport(0, 0, w, h);
- gl.ProjectionMatrix.setOrtho(0, w, h, 0, -1, 1);
+ gl.setProjectionMatrix(0, w, h, 0, -1, 1);
}
diff --git a/src/libjin/Graphics/je_gl.cpp b/src/libjin/Graphics/je_gl.cpp
index a559c07..f098f97 100644
--- a/src/libjin/Graphics/je_gl.cpp
+++ b/src/libjin/Graphics/je_gl.cpp
@@ -14,7 +14,7 @@ namespace JinEngine
OpenGL::OpenGL()
: ogl2d::OpenGL()
{
- mMatrices.push_back(Matrix());
+ mModelViewMatrices.push_back(Matrix());
solve();
}
@@ -36,68 +36,78 @@ namespace JinEngine
void OpenGL::clearMatrix()
{
- mMatrices.clear();
- mMatrices.push_back(Matrix());
- mMatrix.setIdentity();
+ mModelViewMatrices.clear();
+ mModelViewMatrices.push_back(Matrix());
+ mModelViewMatrix.setIdentity();
}
void OpenGL::push()
{
- mMatrices.push_back(Matrix());
+ mModelViewMatrices.push_back(Matrix());
}
void OpenGL::pop()
{
- if (mMatrices.size() == 1)
+ if (mModelViewMatrices.size() == 1)
return;
- mMatrices.pop_back();
+ mModelViewMatrices.pop_back();
solve();
}
void OpenGL::solve()
{
- mMatrix.setIdentity();
- for (Matrix& m : mMatrices)
- mMatrix *= m;
+ mModelViewMatrix.setIdentity();
+ for (Matrix& m : mModelViewMatrices)
+ mModelViewMatrix *= m;
}
void OpenGL::translate(float x, float y)
{
- if (mMatrices.size() == 1)
+ if (mModelViewMatrices.size() == 1)
return;
- Matrix& m = mMatrices.back();
+ Matrix& m = mModelViewMatrices.back();
m.translate(x, y);
- mMatrix.translate(x, y);
+ mModelViewMatrix.translate(x, y);
}
void OpenGL::scale(float sx, float sy)
{
- if (mMatrices.size() == 1)
+ if (mModelViewMatrices.size() == 1)
return;
- Matrix& m = mMatrices.back();
+ Matrix& m = mModelViewMatrices.back();
m.scale(sx, sy);
- mMatrix.scale(sx, sy);
+ mModelViewMatrix.scale(sx, sy);
}
void OpenGL::rotate(float r)
{
- if (mMatrices.size() == 1)
+ if (mModelViewMatrices.size() == 1)
return;
- Matrix& m = mMatrices.back();
+ Matrix& m = mModelViewMatrices.back();
m.rotate(r);
- mMatrix.rotate(r);
+ mModelViewMatrix.rotate(r);
}
- Matrix OpenGL::getModelMatrix(float x, float y, float sx, float sy, float r, float ox, float oy)
+ Matrix OpenGL::getModelViewMatrix(float x, float y, float sx, float sy, float r, float ox, float oy)
{
Matrix m;
m.setTransformation(x, y, sx, sy, r, ox, oy);
- return mMatrix*m;
+ return mModelViewMatrix*m;
}
- Math::Matrix OpenGL::getModelMatrix()
+ Matrix OpenGL::getModelViewMatrix()
{
- return mMatrix;
+ return mModelViewMatrix;
+ }
+
+ const Matrix& OpenGL::getProjectionMatrix()
+ {
+ return mProjectionMatrix;
+ }
+
+ void OpenGL::setProjectionMatrix(float l, float r, float b, float t, float n, float f)
+ {
+ mProjectionMatrix.setOrtho(l, r, b, t, n, f);
}
} // namespace Graphics
diff --git a/src/libjin/Graphics/je_gl.h b/src/libjin/Graphics/je_gl.h
index 03bd26a..fba62a1 100644
--- a/src/libjin/Graphics/je_gl.h
+++ b/src/libjin/Graphics/je_gl.h
@@ -21,16 +21,6 @@ namespace JinEngine
///
///
///
- Math::Matrix ProjectionMatrix;
-/*
- ///
- ///
- ///
- Math::Matrix ModelMatrix;
-*/
- ///
- ///
- ///
OpenGL();
void setColor(Channel r, Channel g, Channel b, Channel a);
@@ -43,28 +33,48 @@ namespace JinEngine
void push();
- void pop();
-
void translate(float x, float y);
void scale(float sx, float sy);
void rotate(float r);
- Math::Matrix getModelMatrix(float x, float y, float sx, float sy, float r, float ox, float oy);
+ void pop();
+
+ ///
+ /// Get model view matrix.
+ ///
+ Math::Matrix getModelViewMatrix(float x, float y, float sx, float sy, float r, float ox, float oy);
+
+ ///
+ /// Get model view matrix.
+ ///
+ Math::Matrix getModelViewMatrix();
- Math::Matrix getModelMatrix();
+ ///
+ /// Set orthogonal matrix.
+ ///
+ void setProjectionMatrix(float l, float r, float b, float t, float n, float f);
+
+ ///
+ /// Get orthogonal matrix.
+ ///
+ const Math::Matrix& getProjectionMatrix();
private:
void solve();
Color mCurrentColor;
- std::vector<Math::Matrix> mMatrices;
- Math::Matrix mMatrix;
+
+ std::vector<Math::Matrix> mModelViewMatrices;
+ Math::Matrix mModelViewMatrix;
+
+ Math::Matrix mProjectionMatrix;
};
+ // Singleton.
extern OpenGL gl;
} // namespace Graphics
diff --git a/src/libjin/Graphics/je_graphic.cpp b/src/libjin/Graphics/je_graphic.cpp
index f439b0b..0bb3fe1 100644
--- a/src/libjin/Graphics/je_graphic.cpp
+++ b/src/libjin/Graphics/je_graphic.cpp
@@ -45,7 +45,7 @@ namespace JinEngine
void Graphic::render(int x, int y, float sx, float sy, float r, float ox, float oy) const
{
- static Math::Matrix modelMatrix = gl.getModelMatrix(x, y, r, sx, sy, ox, oy);
+ Math::Matrix modelMatrix = gl.getModelViewMatrix(x, y, r, sx, sy, ox, oy);
int w = getWidth(), h = getHeight();
static float vertexCoords[8];
static float textureCoords[8];
@@ -61,8 +61,8 @@ namespace JinEngine
textureCoords[6] = 1; textureCoords[7] = 0;
// Set shader.
Shader* shader = Shader::getCurrentShader();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords);
shader->setUVPointer(2, GL_FLOAT, 0, textureCoords);
@@ -91,11 +91,11 @@ namespace JinEngine
textureCoords[4] = slx + slw; textureCoords[5] = sly + slh;
textureCoords[6] = slx + slw; textureCoords[7] = sly;
- static Math::Matrix modelMatrix = gl.getModelMatrix(x, y, r, sx, sy, ax, ay);
+ Math::Matrix modelMatrix = gl.getModelViewMatrix(x, y, r, sx, sy, ax, ay);
Shader* shader = Shader::getCurrentShader();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords);
shader->setUVPointer(2, GL_FLOAT, 0, textureCoords);
diff --git a/src/libjin/Graphics/je_shapes.cpp b/src/libjin/Graphics/je_shapes.cpp
index 2a9fd25..0b239e7 100644
--- a/src/libjin/Graphics/je_shapes.cpp
+++ b/src/libjin/Graphics/je_shapes.cpp
@@ -24,9 +24,9 @@ namespace JinEngine
Shader* shader = Shader::getCurrentShader();
shader->setVertexPointer(2, GL_FLOAT, 0, verts);
- static Matrix modelMatrix = gl.getModelMatrix();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix();
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
glDrawArrays(GL_POINTS, 0, 1);
}
@@ -35,9 +35,9 @@ namespace JinEngine
{
Shader* shader = Shader::getCurrentShader();
shader->setVertexPointer(2, GL_SHORT, 0, p);
- static Matrix modelMatrix = gl.getModelMatrix();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix();
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
glDrawArrays(GL_POINTS, 0, n);
}
@@ -51,9 +51,9 @@ namespace JinEngine
Shader* shader = Shader::getCurrentShader();
shader->setVertexPointer(2, GL_FLOAT, 0, verts);
- static Matrix modelMatrix = gl.getModelMatrix();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix();
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
glDrawArrays(GL_LINES, 0, 2);
}
@@ -98,9 +98,9 @@ namespace JinEngine
void polygon_line(float* p, int count)
{
Shader* shader = Shader::getCurrentShader();
- static Matrix modelMatrix = gl.getModelMatrix();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix();
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
shader->setVertexPointer(2, GL_FLOAT, 0, p);
glDrawArrays(GL_LINE_LOOP, 0, count);
@@ -115,9 +115,9 @@ namespace JinEngine
else if (mode == FILL)
{
Shader* shader = Shader::getCurrentShader();
- static Matrix modelMatrix = gl.getModelMatrix();
- shader->sendMatrix4(SHADER_MODEL_MATRIX, &modelMatrix);
- shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.ProjectionMatrix);
+ Matrix modelMatrix = gl.getModelViewMatrix();
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
shader->setVertexPointer(2, GL_FLOAT, 0, p);
glDrawArrays(GL_POLYGON, 0, count);
diff --git a/src/libjin/Graphics/shaders/je_base.shader.h b/src/libjin/Graphics/shaders/je_base.shader.h
index 88fa872..34996bc 100644
--- a/src/libjin/Graphics/shaders/je_base.shader.h
+++ b/src/libjin/Graphics/shaders/je_base.shader.h
@@ -29,7 +29,7 @@ static const char* base_vertex = R"(
// Projection matrix
uniform mat4 jin_ProjectionMatrix;
// Model view matrix
-uniform mat4 jin_ModelMatrix;
+uniform mat4 jin_ModelViewMatrix;
in vec2 jin_VertexCoords;
in vec2 jin_TextureCoords;
@@ -42,7 +42,7 @@ out vec2 jin_UV;
void main()
{
- vec4 v = jin_ModelMatrix * vec4(jin_VertexCoords, 0, 1.0);
+ vec4 v = jin_ModelViewMatrix * vec4(jin_VertexCoords, 0, 1.0);
Vertex _v = vert(Vertex(v.xy, jin_TextureCoords));
gl_Position = jin_ProjectionMatrix * vec4(_v.xy, 0, 1.0f);
jin_Color = gl_Color;
@@ -81,7 +81,7 @@ static const int BASE_FRAGMENT_SHADER_SIZE = strlen(base_fragment) + BASE_SHARED
#define formatFragmentShader(buf, program) sprintf(buf, base_fragment, base_shared, program)
static const char* SHADER_PROJECTION_MATRIX = "jin_ProjectionMatrix";
-static const char* SHADER_MODEL_MATRIX = "jin_ModelMatrix";
+static const char* SHADER_MODELVIEW_MATRIX = "jin_ModelViewMatrix";
static const char* SHADER_MAIN_TEXTURE = "jin_MainTexture";
static const char* SHADER_VERTEX_COORDS = "jin_VertexCoords";
static const char* SHADER_TEXTURE_COORDS = "jin_TextureCoords";