diff options
author | chai <chaifix@163.com> | 2018-12-22 13:10:45 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-12-22 13:10:45 +0800 |
commit | 731a8ba6e52aa0b000b46c89e414a248e05778ff (patch) | |
tree | 5e6c62d0469f9a6e6019228a81a23bdfb9b4505e /src/libjin-lua/scripts/graphics/graphics.lua | |
parent | ef7c4915c20d7f6ceb5484f99f96979fd5a9594d (diff) |
*移动embed script位置
Diffstat (limited to 'src/libjin-lua/scripts/graphics/graphics.lua')
-rw-r--r-- | src/libjin-lua/scripts/graphics/graphics.lua | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/src/libjin-lua/scripts/graphics/graphics.lua b/src/libjin-lua/scripts/graphics/graphics.lua new file mode 100644 index 0000000..65a320f --- /dev/null +++ b/src/libjin-lua/scripts/graphics/graphics.lua @@ -0,0 +1,162 @@ + +jin.graphics = jin.graphics or {} + +local jg = jin.graphics + +jg.RenderMode = { + FILL = 1, + LINE = 2, +} + +jg.SpriteOrigin = { + TOPLEFT = 0, + TOPCENTER = 1, + TOPRIGHT = 2, + MIDDLELEFT = 3, + MIDDLECENTER = 4, + MIDDLERIGHT = 5, + BOTTOMLEFT = 6, + BOTTOMCENTER = 7, + BOTTOMRIGHT = 8 +} + +jg.SpriteMode = { + SINGLE = 1, + RANDOM = 2, + ANIMATED = 3 +} + +-- Built in shaders. +jg.Shaders = nil +local function compileBuiltInShaders() + if jg.Shaders ~= nil then + return + end + jg.Shaders = {} + jg.Shaders.Font = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return Color(col.rgb, texel(tex, v.uv).a); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Texture = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Sprite = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.SpriteBatch = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Shape = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col; + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Mesh = jg.newShader[[ + #VERTEX_SHADER + in Vec4 color; + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv) * v.color; + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Default = jg.newShader[[ + #VERTEX_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] +end + +local _init = jg.init +local initialized = false +jg.init = function(setting) + if initialized then + return initialized + end + initialized = _init(setting) + if initialized then + compileBuiltInShaders() + jg.useShader(jg.Shaders.Default) + end + return initialized +end + +jg.unuseShader = function() + jg.useShader(jg.Shaders.Default) +end + +-- Reset all attributes to default value. +jg.reset = function() + jg.setColor(255, 255, 255, 255) + jg.setClearColor(0, 0, 0, 255) + jg.clear() + jg.unsetFont() + jg.unuseShader() +end |