diff options
author | chai <chaifix@163.com> | 2018-11-16 21:29:52 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-16 21:29:52 +0800 |
commit | a4db0e0622a3764d090a8c2ecf8bd5b56442ccef (patch) | |
tree | 7073a0bfb5dd7f83162fc62eb67d3c5a6168cf9e | |
parent | 0056e468d9c3291443d87bfc05441e375a315433 (diff) |
*更新渲染minimal
-rw-r--r-- | bin/Jin.exe | bin | 2499584 -> 2265600 bytes | |||
-rw-r--r-- | bin/SDL2.dll | bin | 1279488 -> 1242112 bytes | |||
-rw-r--r-- | bin/game/main.lua | 8 | ||||
-rw-r--r-- | bin/jin.exe | bin | 2499584 -> 2265600 bytes | |||
-rw-r--r-- | src/3rdparty/buildvm/buildvm.exe | bin | 123392 -> 121856 bytes | |||
-rw-r--r-- | src/3rdparty/minilua/minilua.exe | bin | 219136 -> 209920 bytes | |||
-rw-r--r-- | src/libjin/Graphics/fonts/je_texture_font.cpp | 6 | ||||
-rw-r--r-- | src/libjin/Graphics/fonts/je_ttf.cpp | 6 | ||||
-rw-r--r-- | src/libjin/Graphics/je_canvas.cpp | 4 | ||||
-rw-r--r-- | src/libjin/Graphics/je_gl.cpp | 56 | ||||
-rw-r--r-- | src/libjin/Graphics/je_gl.h | 42 | ||||
-rw-r--r-- | src/libjin/Graphics/je_graphic.cpp | 12 | ||||
-rw-r--r-- | src/libjin/Graphics/je_shapes.cpp | 30 | ||||
-rw-r--r-- | src/libjin/Graphics/shaders/je_base.shader.h | 6 |
14 files changed, 96 insertions, 74 deletions
diff --git a/bin/Jin.exe b/bin/Jin.exe Binary files differindex 0645634..7009d01 100644 --- a/bin/Jin.exe +++ b/bin/Jin.exe diff --git a/bin/SDL2.dll b/bin/SDL2.dll Binary files differindex dfc7d55..c381d42 100644 --- a/bin/SDL2.dll +++ b/bin/SDL2.dll 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 Binary files differindex 0645634..7009d01 100644 --- a/bin/jin.exe +++ b/bin/jin.exe diff --git a/src/3rdparty/buildvm/buildvm.exe b/src/3rdparty/buildvm/buildvm.exe Binary files differindex b77cd0a..0990afe 100644 --- a/src/3rdparty/buildvm/buildvm.exe +++ b/src/3rdparty/buildvm/buildvm.exe diff --git a/src/3rdparty/minilua/minilua.exe b/src/3rdparty/minilua/minilua.exe Binary files differindex 6115080..9a56818 100644 --- a/src/3rdparty/minilua/minilua.exe +++ b/src/3rdparty/minilua/minilua.exe 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"; |