aboutsummaryrefslogtreecommitdiff
path: root/Graphics/Glyph/Shaders.hs
diff options
context:
space:
mode:
authorJoshua Rahm <joshua.rahm@colorado.edu>2014-04-18 01:17:46 -0600
committerJoshua Rahm <joshua.rahm@colorado.edu>2014-04-18 01:17:46 -0600
commit915cda147b565880fecefe5f82ca242bad6114fc (patch)
treed6afedd6d33bdca1601faaaebd731b89aab75431 /Graphics/Glyph/Shaders.hs
parent73daf65aaa31b5fb59f4a91d9185387f63c7b09f (diff)
downloadterralloc-915cda147b565880fecefe5f82ca242bad6114fc.tar.gz
terralloc-915cda147b565880fecefe5f82ca242bad6114fc.tar.bz2
terralloc-915cda147b565880fecefe5f82ca242bad6114fc.zip
starting tesselation shader
Diffstat (limited to 'Graphics/Glyph/Shaders.hs')
-rw-r--r--Graphics/Glyph/Shaders.hs34
1 files changed, 22 insertions, 12 deletions
diff --git a/Graphics/Glyph/Shaders.hs b/Graphics/Glyph/Shaders.hs
index 01f27b6..c11886d 100644
--- a/Graphics/Glyph/Shaders.hs
+++ b/Graphics/Glyph/Shaders.hs
@@ -89,21 +89,31 @@ getUniformLocation name =
get currentProgram >>= maybe (return Nothing) (\prog ->
liftM Just (get $ uniformLocation prog name) )
-loadProgramSafe ::
- (IsShaderSource a,
- IsShaderSource b,
- IsShaderSource c) =>
- a -> b -> Maybe c -> IO (Maybe Program)
-loadProgramSafe vert frag geom = do
+loadProgramFullSafe ::
+ (IsShaderSource tc,
+ IsShaderSource te,
+ IsShaderSource g,
+ IsShaderSource v,
+ IsShaderSource f) => Maybe (tc,te) -> Maybe g -> v -> f -> IO (Maybe Program)
+loadProgramFullSafe tess geometry vert frag = do
+ let (ts1,ts2) = distribMaybe tess
shaders <- sequence $ catMaybes [
- Just $ loadShader VertexShader vert,
- Just $ loadShader FragmentShader frag,
- liftM (loadShader GeometryShader) geom]
- -- mapM_ (putStrLn . fst) shaders
- (linklog, maybeProg) <- createShaderProgramSafe shaders
-
+ Just $ loadShader VertexShader vert,
+ Just $ loadShader FragmentShader frag,
+ liftM (loadShader GeometryShader) geometry,
+ liftM (loadShader TessControlShader) ts1,
+ liftM (loadShader TessEvaluationShader) ts2]
+ (linklog,maybeProg) <- createShaderProgramSafe shaders
if isNothing maybeProg then do
putStrLn "Failed to link program"
putStrLn linklog
return Nothing
else return maybeProg
+
+
+loadProgramSafe ::
+ (IsShaderSource a,
+ IsShaderSource b,
+ IsShaderSource c) =>
+ a -> b -> Maybe c -> IO (Maybe Program)
+loadProgramSafe vert frag geom = loadProgramFullSafe (Nothing::Maybe(String,String)) geom vert frag