aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-12-05 12:34:26 +0800
committerchai <chaifix@163.com>2018-12-05 12:34:26 +0800
commitc78bd640228c0b6b9f7c294793c4f2f58b637c67 (patch)
tree2fbd941f8b88b2d9230e04a8b644e25d48f62476 /src
parentadbc170d850a23b219f1718c2cf3e40fadd66ce0 (diff)
*格式化代码
Diffstat (limited to 'src')
-rw-r--r--src/libjin/graphics/fonts/je_texture_font.cpp2
-rw-r--r--src/libjin/graphics/fonts/je_ttf.cpp2
-rw-r--r--src/libjin/graphics/je_gl.cpp59
-rw-r--r--src/libjin/graphics/je_gl.h29
-rw-r--r--src/libjin/graphics/je_graphic.cpp4
-rw-r--r--src/libjin/graphics/je_shapes.cpp10
-rw-r--r--src/libjin/graphics/particles/je_particle_system.h2
-rw-r--r--src/libjin/graphics/shaders/je_shader.cpp10
-rw-r--r--src/libjin/graphics/shaders/je_shader.h12
-rw-r--r--src/lua/common/je_lua_object.h11
-rw-r--r--src/lua/modules/graphics/je_lua_animator.cpp4
-rw-r--r--src/lua/modules/graphics/je_lua_graphics.cpp25
12 files changed, 117 insertions, 53 deletions
diff --git a/src/libjin/graphics/fonts/je_texture_font.cpp b/src/libjin/graphics/fonts/je_texture_font.cpp
index 3599c58..8facc34 100644
--- a/src/libjin/graphics/fonts/je_texture_font.cpp
+++ b/src/libjin/graphics/fonts/je_texture_font.cpp
@@ -217,7 +217,7 @@ namespace JinEngine
void TextureFont::render(const Page* page, int x, int y)
{
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
Matrix modelMatrix = gl.getModelViewMatrix(x, y, 1, 1, 0, 0, 0);
diff --git a/src/libjin/graphics/fonts/je_ttf.cpp b/src/libjin/graphics/fonts/je_ttf.cpp
index d62798b..3f664fa 100644
--- a/src/libjin/graphics/fonts/je_ttf.cpp
+++ b/src/libjin/graphics/fonts/je_ttf.cpp
@@ -305,7 +305,7 @@ namespace JinEngine
void TTF::render(const Page* page, int x, int y)
{
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
Matrix modelMatrix = gl.getModelViewMatrix(x, y, 1, 1, 0, 0, 0);
diff --git a/src/libjin/graphics/je_gl.cpp b/src/libjin/graphics/je_gl.cpp
index c45a50e..72ebb45 100644
--- a/src/libjin/graphics/je_gl.cpp
+++ b/src/libjin/graphics/je_gl.cpp
@@ -288,5 +288,64 @@ namespace JinEngine
glBlendFuncSeparate(srcRGB, dstRGB, srcA, dstA);
}
+ void OpenGL::useShader(Shaders::Shader* shader)
+ {
+ if (shader)
+ {
+ shader->use();
+ mShader = shader;
+ }
+ }
+
+ void OpenGL::unuseShader()
+ {
+ if (mShader)
+ {
+ mShader->unuse();
+ mShader = nullptr;
+ }
+ }
+
+ Shaders::Shader* OpenGL::getShader()
+ {
+ return mShader;
+ }
+
+ void OpenGL::bindCanvas(Canvas* canvas)
+ {
+ if (canvas)
+ {
+ Canvas::bind(canvas);
+ mCanvas = canvas;
+ }
+ }
+
+ void OpenGL::unbindCanvas()
+ {
+ if (mCanvas)
+ {
+ mCanvas->unbind();
+ mCanvas = nullptr;
+ }
+ }
+
+ void OpenGL::setFont(Fonts::Font* font)
+ {
+ if (font)
+ {
+ mFont = font;
+ }
+ }
+
+ void OpenGL::unsetFont()
+ {
+ mFont = nullptr;
+ }
+
+ Fonts::Font* OpenGL::getFont()
+ {
+ return mFont;
+ }
+
} // namespace Graphics
} // namespace JinEngine \ No newline at end of file
diff --git a/src/libjin/graphics/je_gl.h b/src/libjin/graphics/je_gl.h
index ee0194e..d4f1ced 100644
--- a/src/libjin/graphics/je_gl.h
+++ b/src/libjin/graphics/je_gl.h
@@ -133,22 +133,39 @@ namespace JinEngine
///
///
///
- void useShader(const Shaders::Shader* shader);
+ void useShader(Shaders::Shader* shader);
+
+ ///
+ ///
+ ///
+ void unuseShader();
+
+ Shaders::Shader* getShader();
///
///
///
- void useFont(const Fonts::Font* font);
+ void setFont(Fonts::Font* font);
+
+ ///
+ ///
+ ///
+ void unsetFont();
+
+ ///
+ ///
+ ///
+ Fonts::Font* getFont();
///
///
///
- void useCanvas(const Canvas* canvas);
+ void bindCanvas(Canvas* canvas);
///
///
///
- void unuseShader();
+ void unbindCanvas();
///
///
@@ -180,12 +197,12 @@ namespace JinEngine
///
///
///
- Color mColor;
+ BlendMode mBlendMode;
///
///
///
- BlendMode mBlendMode;
+ Color mColor;
//struct { GLubyte r, g, b, a; } mColor; // current draw color
//struct { GLubyte r, g, b, a; } mBackColor; // previous draw color
diff --git a/src/libjin/graphics/je_graphic.cpp b/src/libjin/graphics/je_graphic.cpp
index 6cd05a1..d326823 100644
--- a/src/libjin/graphics/je_graphic.cpp
+++ b/src/libjin/graphics/je_graphic.cpp
@@ -70,7 +70,7 @@ namespace JinEngine
textureCoords[4] = 1; textureCoords[5] = 1;
textureCoords[6] = 1; textureCoords[7] = 0;
// Set shader.
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords);
@@ -103,7 +103,7 @@ namespace JinEngine
Math::Matrix modelMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ax, ay);
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords);
diff --git a/src/libjin/graphics/je_shapes.cpp b/src/libjin/graphics/je_shapes.cpp
index 0b239e7..ee5e9e5 100644
--- a/src/libjin/graphics/je_shapes.cpp
+++ b/src/libjin/graphics/je_shapes.cpp
@@ -22,7 +22,7 @@ namespace JinEngine
{
float verts[] = { x + 0.5f , y + 0.5f };
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
shader->setVertexPointer(2, GL_FLOAT, 0, verts);
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
@@ -33,7 +33,7 @@ namespace JinEngine
void points(int n, GLshort* p)
{
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
shader->setVertexPointer(2, GL_SHORT, 0, p);
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
@@ -49,7 +49,7 @@ namespace JinEngine
x2 + 0.5f, y2 + 0.5f
};
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
shader->setVertexPointer(2, GL_FLOAT, 0, verts);
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
@@ -97,7 +97,7 @@ namespace JinEngine
void polygon_line(float* p, int count)
{
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
@@ -114,7 +114,7 @@ namespace JinEngine
}
else if (mode == FILL)
{
- Shader* shader = Shader::getCurrentShader();
+ Shader* shader = gl.getShader();
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
diff --git a/src/libjin/graphics/particles/je_particle_system.h b/src/libjin/graphics/particles/je_particle_system.h
index b3640d4..56043a5 100644
--- a/src/libjin/graphics/particles/je_particle_system.h
+++ b/src/libjin/graphics/particles/je_particle_system.h
@@ -115,7 +115,7 @@ namespace JinEngine
void setEmitPosition(const Math::Vector2<float>& position);
//////////////////////////////////////////////////////////////////////////////////////////////////
- // Particle Emitter modification.
+ // Particle modification.
//////////////////////////////////////////////////////////////////////////////////////////////////
void setParticleLife(float floor, float ceil);
diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp
index 3748de6..b78c71c 100644
--- a/src/libjin/graphics/shaders/je_shader.cpp
+++ b/src/libjin/graphics/shaders/je_shader.cpp
@@ -6,6 +6,8 @@
#include "../../filesystem/je_buffer.h"
#include "../../utils/je_macros.h"
+#include "../je_gl.h"
+
#include "je_jsl_compiler.h"
#include "je_shader.h"
@@ -52,8 +54,6 @@ namespace JinEngine
//
const int DEFAULT_TEXTURE_UNIT = 0;
- Shader* Shader::CurrentShader = nullptr;
-
Shader* Shader::createShader(const string& program)
{
Shader* shader = nullptr;
@@ -77,7 +77,7 @@ namespace JinEngine
Shader::~Shader()
{
- if (CurrentShader == this)
+ if (gl.getShader() == this)
unuse();
// delete shader program
glDeleteShader(mPID);
@@ -130,14 +130,12 @@ if (success == GL_FALSE) \
void Shader::use()
{
glUseProgram(mPID);
- CurrentShader = this;
sendInt(SHADER_MAIN_TEXTURE, DEFAULT_TEXTURE_UNIT);
}
void Shader::unuse()
{
glUseProgram(0);
- CurrentShader = nullptr;
}
GLint Shader::claimTextureUnit(const std::string& name)
@@ -153,7 +151,7 @@ if (success == GL_FALSE) \
}
#define checkJSL() \
- if (CurrentShader != this) \
+ if (gl.getShader() != this) \
return
void Shader::sendInt(const char* name, int value)
diff --git a/src/libjin/graphics/shaders/je_shader.h b/src/libjin/graphics/shaders/je_shader.h
index 36f3a40..bb7bee0 100644
--- a/src/libjin/graphics/shaders/je_shader.h
+++ b/src/libjin/graphics/shaders/je_shader.h
@@ -40,13 +40,6 @@ namespace JinEngine
static Shader* createShader(const std::string& source);
///
- /// Get current shader.
- ///
- /// @return Current used shader program.
- ///
- static inline Shader* getCurrentShader() { return CurrentShader; }
-
- ///
/// Unuse current shader.
///
static void unuse();
@@ -163,11 +156,6 @@ namespace JinEngine
protected:
///
- /// Reference of current used shader.
- ///
- static Shader* CurrentShader;
-
- ///
/// Get texture unit of the uniform texture. If not, assign one.
///
/// @param name Name of the texture uniform variable.
diff --git a/src/lua/common/je_lua_object.h b/src/lua/common/je_lua_object.h
index c2f0195..15fa6e4 100644
--- a/src/lua/common/je_lua_object.h
+++ b/src/lua/common/je_lua_object.h
@@ -57,14 +57,17 @@ namespace JinEngine
int getDependenciesCount();
+ //////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Lua state object.
+ //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ using DepsMap = std::map<uint, SharedBase*>;
+
lua_State* state;
SharedBase* object;
- std::map<uint, SharedBase*>* dependencies;
-
- private:
- using DepsMap = std::map<uint, SharedBase*>;
+ DepsMap* dependencies;
};
diff --git a/src/lua/modules/graphics/je_lua_animator.cpp b/src/lua/modules/graphics/je_lua_animator.cpp
index c8dd420..360a276 100644
--- a/src/lua/modules/graphics/je_lua_animator.cpp
+++ b/src/lua/modules/graphics/je_lua_animator.cpp
@@ -30,8 +30,8 @@ namespace JinEngine
LUA_IMPLEMENT int l_gc(lua_State* L)
{
- LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Animation);
- p->release();
+ LuaObject* obj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Animation);
+ obj->release();
return 0;
}
diff --git a/src/lua/modules/graphics/je_lua_graphics.cpp b/src/lua/modules/graphics/je_lua_graphics.cpp
index 867547d..7175309 100644
--- a/src/lua/modules/graphics/je_lua_graphics.cpp
+++ b/src/lua/modules/graphics/je_lua_graphics.cpp
@@ -40,7 +40,6 @@ namespace JinEngine
{
Color curRenderColor;
Color curClearColor;
- Font* curFont = nullptr;
Font* defaultFont = nullptr;
bool initialized = false;
} context;
@@ -74,8 +73,8 @@ namespace JinEngine
TextureFont* tf = TextureFont::createTextureFont(bitmap, Text(Encode::UTF8, default_charset), default_font_split, bitmap->getHeight());
delete bitmap;
context.defaultFont = tf;
- context.curFont = tf;
-
+ gl.setFont(tf);
+
luax_pushboolean(L, context.initialized);
return 1;
}
@@ -462,7 +461,7 @@ namespace JinEngine
/* need set font */
LUA_IMPLEMENT int l_print(lua_State* L)
{
- Font* font = context.curFont;
+ Font* font = gl.getFont();
if (font == nullptr)
return 0;
unsigned length;
@@ -509,18 +508,18 @@ namespace JinEngine
if (luax_gettop(L) == 0)
{
// bind to default canvas
- Canvas::unbind();
+ gl.unbindCanvas();
return 0;
}
LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Canvas);
Shared<Canvas>& shared = luaObj->getShared<Canvas>();
- Canvas::bind(shared.getObject());
+ gl.bindCanvas(shared.getObject());
return 0;
}
LUA_IMPLEMENT int l_unbindCanvas(lua_State* L)
{
- Canvas::unbind();
+ gl.unbindCanvas();
return 0;
}
@@ -528,14 +527,14 @@ namespace JinEngine
{
if (luax_gettop(L) == 0)
{
- Shader::unuse();
+ gl.unuseShader();
return 0;
}
if (luax_istype(L, 1, Jin_Lua_Shader))
{
LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Shader);
- Shared<Shader>& jsl = luaObj->getShared<Shader>();
- jsl->use();
+ Shared<Shader>& shader = luaObj->getShared<Shader>();
+ gl.useShader(shader.getObject());
}
else
{
@@ -909,20 +908,20 @@ namespace JinEngine
{
LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_TTF);
TTF* ttf = p->getObject<TTF>();
- context.curFont = ttf;
+ gl.setFont(ttf);
}
else if (luax_istype(L, 1, Jin_Lua_TextureFont))
{
LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_TextureFont);
TextureFont* tf = p->getObject<TextureFont>();
- context.curFont = tf;
+ gl.setFont(tf);
}
return 0;
}
LUA_IMPLEMENT int l_unsetFont(lua_State* L)
{
- context.curFont = context.defaultFont;
+ gl.setFont(context.defaultFont);
return 0;
}