aboutsummaryrefslogtreecommitdiff
path: root/src/libjin-lua/scripts/graphics/graphics.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-01-04 22:54:59 +0800
committerchai <chaifix@163.com>2019-01-04 22:54:59 +0800
commitc446e8186afa31c8d346383c0db8b8070fa563cd (patch)
treea2a0e088c51f1ba251756aa5ab50b27dc8eeef39 /src/libjin-lua/scripts/graphics/graphics.lua
parentc42eb2529eead4b17c0c7f9da7ac9c41563a13fa (diff)
*编译jsl shader失败时使用error shader
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