diff options
author | chai <chaifix@163.com> | 2019-01-06 23:33:08 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-01-06 23:33:08 +0800 |
commit | da056982e50bdd9cb9f944691cc88ca98b053b77 (patch) | |
tree | 490842e50d98f48affd38ff23f5bb7fda1937a7f | |
parent | c446e8186afa31c8d346383c0db8b8070fa563cd (diff) |
*misc
-rw-r--r-- | bin/jin.exe | bin | 573440 -> 573440 bytes | |||
-rw-r--r-- | samples/post-processing/config.lua | 2 | ||||
-rw-r--r-- | samples/post-processing/shaders/rgb-split.jsl | 2 | ||||
-rw-r--r-- | src/libjin/graphics/fonts/je_texture_font.cpp | 3 | ||||
-rw-r--r-- | src/libjin/graphics/fonts/je_ttf.cpp | 3 | ||||
-rw-r--r-- | src/libjin/graphics/je_graphic.cpp | 8 | ||||
-rw-r--r-- | src/libjin/graphics/je_mesh.cpp | 4 | ||||
-rw-r--r-- | src/libjin/graphics/je_shapes.cpp | 20 | ||||
-rw-r--r-- | src/libjin/graphics/shaders/je_shader.cpp | 22 | ||||
-rw-r--r-- | src/libjin/graphics/shaders/je_shader.h | 9 |
10 files changed, 51 insertions, 22 deletions
diff --git a/bin/jin.exe b/bin/jin.exe Binary files differindex 1478b8e..92e0cbc 100644 --- a/bin/jin.exe +++ b/bin/jin.exe diff --git a/samples/post-processing/config.lua b/samples/post-processing/config.lua index 095ee28..3c6ff07 100644 --- a/samples/post-processing/config.lua +++ b/samples/post-processing/config.lua @@ -1,6 +1,6 @@ return { - title = "window form", + title = "post-processing", icon = "splash.png", vsync = true }
\ No newline at end of file diff --git a/samples/post-processing/shaders/rgb-split.jsl b/samples/post-processing/shaders/rgb-split.jsl index 41e7762..aba401b 100644 --- a/samples/post-processing/shaders/rgb-split.jsl +++ b/samples/post-processing/shaders/rgb-split.jsl @@ -9,7 +9,7 @@ Vertex vert(Vertex v) Color frag(Color col, Texture tex, Vertex v) { float t = jin_Time.x; - t = 0.02; + //t = 0.02; float a = abs(sin(t)) * 3.14; vec2 p = vec2(0.5*cos(a) + 0.5, 0.5*sin(a) + 0.5); vec2 dir = v.uv - p; diff --git a/src/libjin/graphics/fonts/je_texture_font.cpp b/src/libjin/graphics/fonts/je_texture_font.cpp index 016367c..49ac797 100644 --- a/src/libjin/graphics/fonts/je_texture_font.cpp +++ b/src/libjin/graphics/fonts/je_texture_font.cpp @@ -276,7 +276,7 @@ namespace JinEngine const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist; const vector<GlyphVertex>& glyphvertices = page->glyphvertices; Matrix modelMatrix = gl.getModelViewMatrix(x, y, 1, 1, 0, 0, 0); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); for (int i = 0; i < glyphinfolist.size(); ++i) @@ -288,6 +288,7 @@ namespace JinEngine gl.drawArrays(GL_QUADS, 0, info.count); gl.bindTexture(0); } + shader->end(); } void TextureFont::render(const Content& text, int x, int y, int lineheight, int spacing) diff --git a/src/libjin/graphics/fonts/je_ttf.cpp b/src/libjin/graphics/fonts/je_ttf.cpp index 1df7fa7..89aa096 100644 --- a/src/libjin/graphics/fonts/je_ttf.cpp +++ b/src/libjin/graphics/fonts/je_ttf.cpp @@ -295,7 +295,7 @@ namespace JinEngine const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist; const vector<GlyphVertex>& glyphvertices = page->glyphvertices; Matrix modelMatrix = gl.getModelViewMatrix(x, y, 1, 1, 0, 0, 0); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); for (int i = 0; i < glyphinfolist.size(); ++i) @@ -307,6 +307,7 @@ namespace JinEngine gl.drawArrays(GL_QUADS, 0, info.count); gl.bindTexture(0); } + shader->end(); } void TTF::render(const Text& text, int x, int y, int lineheight, int spacing /* = 0 */) diff --git a/src/libjin/graphics/je_graphic.cpp b/src/libjin/graphics/je_graphic.cpp index 18dbf42..e2c22d1 100644 --- a/src/libjin/graphics/je_graphic.cpp +++ b/src/libjin/graphics/je_graphic.cpp @@ -71,7 +71,7 @@ namespace JinEngine textureCoords[6] = 1; textureCoords[7] = 0; // Set shader. Shader* shader = gl.getShader(); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()) .uploadVertices(2, GL_FLOAT, 0, vertexCoords) @@ -80,6 +80,8 @@ namespace JinEngine gl.bindTexture(getGLTexture()); gl.drawArrays(GL_QUADS, 0, 4); gl.bindTexture(0); + + shader->end(); } void Graphic::render(const Math::Quad& slice, float x, float y, float sx, float sy, float r, float ax, float ay) const @@ -105,7 +107,7 @@ namespace JinEngine Math::Matrix modelViewMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ax, ay); Shader* shader = gl.getShader(); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()) .uploadVertices(2, GL_FLOAT, 0, vertexCoords) @@ -114,6 +116,8 @@ namespace JinEngine gl.bindTexture(getGLTexture()); gl.drawArrays(GL_QUADS, 0, 4); gl.bindTexture(0); + + shader->end(); } void Graphic::render(const Math::Transform& transform) const diff --git a/src/libjin/graphics/je_mesh.cpp b/src/libjin/graphics/je_mesh.cpp index 2d453b0..e3bebe6 100644 --- a/src/libjin/graphics/je_mesh.cpp +++ b/src/libjin/graphics/je_mesh.cpp @@ -60,7 +60,7 @@ namespace JinEngine Math::Matrix modelViewMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ox, oy); Shader* shader = gl.getShader(); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()) .uploadVertices(2, GL_FLOAT, sizeof(Vertex), &(mVertices[0].xy)) @@ -70,6 +70,8 @@ namespace JinEngine gl.bindTexture(mGraphic->getGLTexture()); gl.drawArrays(GL_POLYGON, 0, mVertices.size()); gl.bindTexture(0); + + shader->end(); }; } // namespace Graphics diff --git a/src/libjin/graphics/je_shapes.cpp b/src/libjin/graphics/je_shapes.cpp index ce5c7e7..493e173 100644 --- a/src/libjin/graphics/je_shapes.cpp +++ b/src/libjin/graphics/je_shapes.cpp @@ -25,12 +25,14 @@ namespace JinEngine Matrix modelMatrix = gl.getModelViewMatrix(); Shader* shader = gl.getShader(); - shader->prepare() + shader->begin() .uploadVertices(2, GL_FLOAT, 0, verts) .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); gl.drawArrays(GL_POINTS, 0, 1); + + shader->end(); } void points(int n, GLshort* p) @@ -38,12 +40,14 @@ namespace JinEngine Matrix modelMatrix = gl.getModelViewMatrix(); Shader* shader = gl.getShader(); - shader->prepare() + shader->begin() .uploadVertices(2, GL_SHORT, 0, p) .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); gl.drawArrays(GL_POINTS, 0, n); + + shader->end(); } void line(int x1, int y1, int x2, int y2) @@ -56,12 +60,14 @@ namespace JinEngine Matrix modelMatrix = gl.getModelViewMatrix(); Shader* shader = gl.getShader(); - shader->prepare() + shader->begin() .uploadVertices(2, GL_FLOAT, 0, verts) .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()); gl.drawArrays(GL_LINES, 0, 2); + + shader->end(); } void circle(RenderMode mode, int x, int y, int r) @@ -105,12 +111,14 @@ namespace JinEngine { Shader* shader = gl.getShader(); Matrix modelMatrix = gl.getModelViewMatrix(); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()) .uploadVertices(2, GL_FLOAT, 0, p); gl.drawArrays(GL_LINE_LOOP, 0, count); + + shader->end(); } void polygon(RenderMode mode, float* p, int count) @@ -123,12 +131,14 @@ namespace JinEngine { Shader* shader = gl.getShader(); Matrix modelMatrix = gl.getModelViewMatrix(); - shader->prepare() + shader->begin() .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix) .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix()) .uploadVertices(2, GL_FLOAT, 0, p); gl.drawArrays(GL_POLYGON, 0, count); + + shader->end(); } } diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp index 059c411..0803e65 100644 --- a/src/libjin/graphics/shaders/je_shader.cpp +++ b/src/libjin/graphics/shaders/je_shader.cpp @@ -58,7 +58,8 @@ namespace JinEngine // const int DEFAULT_TEXTURE_UNIT = 0; - GLint Shader::mTextureUnit = DEFAULT_TEXTURE_UNIT; + static GLint textureUnit = 0; + GLint Shader::mAttributeIndex = 0; Shader::Shader(const string& program) @@ -79,8 +80,11 @@ namespace JinEngine glDeleteShader(mPID); } - Shader& Shader::prepare() + Shader& Shader::begin() { + + textureUnit = DEFAULT_TEXTURE_UNIT; + // Send uniforms. sendInt(SHADER_MAIN_TEXTURE, DEFAULT_TEXTURE_UNIT); sendVec2(SHADER_TIME, Time::getSecond(), Time::getDeltaTime()); @@ -93,15 +97,17 @@ namespace JinEngine { sendVec2(SHADER_RENDERTARGET_SIZE, rt->getWidth(), rt->getHeight()); } - // Reset attribute index. - for(; mAttributeIndex > 0; --mAttributeIndex) - glDisableVertexAttribArray(mAttributeIndex); - - mTextureUnit = DEFAULT_TEXTURE_UNIT; return *this; } + void Shader::end() + { + // Reset attribute index. + for (; mAttributeIndex > 0; --mAttributeIndex) + glDisableVertexAttribArray(mAttributeIndex); + } + bool Shader::compile(const string& program) { string vertex_shader, fragment_shader; @@ -159,7 +165,7 @@ namespace JinEngine // return 0; //mTextureUnits[name] = mCurrentTextureUnit; //return mCurrentTextureUnit; - return mTextureUnit++; + return textureUnit++; } GLint Shader::getUniformLocation(const char* uniform) diff --git a/src/libjin/graphics/shaders/je_shader.h b/src/libjin/graphics/shaders/je_shader.h index c3ca721..402805a 100644 --- a/src/libjin/graphics/shaders/je_shader.h +++ b/src/libjin/graphics/shaders/je_shader.h @@ -47,7 +47,12 @@ namespace JinEngine /// /// Prepare shader and set default uniforms. /// - Shader& prepare(); + Shader& begin(); + + /// + /// End use shader. + /// + void end(); /// /// Send float value to shader. @@ -181,7 +186,7 @@ namespace JinEngine /// bool compile(const std::string& program); - static GLint mTextureUnit; + //static GLint mTextureUnit; static GLint mAttributeIndex; GLuint mPID; |