aboutsummaryrefslogtreecommitdiff
path: root/src/libjin-lua/scripts/graphics/graphics.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-01-07 09:54:08 +0800
committerchai <chaifix@163.com>2019-01-07 09:54:08 +0800
commit2af7f2f5e3da8f6c236e7996781950e1bc6c1f9c (patch)
treef6a8a9618e146c93e4d4d964a6e13cd16f528693 /src/libjin-lua/scripts/graphics/graphics.lua
parent909e544ed322b28a6f59febf3213e05068e9e93c (diff)
parentda056982e50bdd9cb9f944691cc88ca98b053b77 (diff)
Merge branch 'master' of warmcat.org:/home/git-repo/Jin
Diffstat (limited to 'src/libjin-lua/scripts/graphics/graphics.lua')
-rw-r--r--src/libjin-lua/scripts/graphics/graphics.lua48
1 files changed, 43 insertions, 5 deletions
diff --git a/src/libjin-lua/scripts/graphics/graphics.lua b/src/libjin-lua/scripts/graphics/graphics.lua
index ae896d0..3abb64d 100644
--- a/src/libjin-lua/scripts/graphics/graphics.lua
+++ b/src/libjin-lua/scripts/graphics/graphics.lua
@@ -138,7 +138,21 @@ local function compileBuiltInShaders()
return col * texel(tex, v.uv);
}
#END_FRAGMENT_SHADER
- ]]
+ ]]
+ jg.Shaders.Error = 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(1, 0, 1, 1);
+ }
+ #END_FRAGMENT_SHADER
+ ]]
end
local _init = jg.init
@@ -155,10 +169,6 @@ jg.init = function(setting)
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)
@@ -167,3 +177,31 @@ jg.reset = function()
jg.unsetFont()
jg.unuseShader()
end
+
+jg.unuseShader = function()
+ jg.useShader(jg.Shaders.Default)
+end
+
+local _newShader = jg.newShader
+
+jg.newShader = function(program)
+ local shader = _newShader(program)
+ if shader == nil then
+ jin.log.error("Compile shader failed:\n" .. debug.traceback())
+ return jg.Shaders.Error
+ else
+ return shader
+ end
+end
+
+local _newShaderf = jg.newShaderf
+
+jg.newShaderf = function(file)
+ local shader = _newShaderf(file)
+ if shader == nil then
+ jin.log.error("Compile shader failed:\n" .. debug.traceback())
+ return jg.Shaders.Error
+ else
+ return shader
+ end
+end