diff options
Diffstat (limited to 'src/Vivant/Shader.hs')
-rw-r--r-- | src/Vivant/Shader.hs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/Vivant/Shader.hs b/src/Vivant/Shader.hs index 503d1b7..dfd5d41 100644 --- a/src/Vivant/Shader.hs +++ b/src/Vivant/Shader.hs @@ -1,4 +1,4 @@ -module Vivant.Shader (initShaders) where +module Vivant.Shader (createProgram) where import SDL (($=)) import qualified Graphics.Rendering.OpenGL as GL @@ -8,8 +8,8 @@ import System.IO (stderr, hPutStrLn) import Control.Monad (unless) import Paths_vivant (getDataDir) -initShaders :: IO (GL.Program, GL.AttribLocation) -initShaders = do +createProgram :: IO GL.Program +createProgram = do datadir <- getDataDir -- compile vertex shader vs <- GL.createShader GL.VertexShader @@ -18,7 +18,8 @@ initShaders = do GL.compileShader vs vsOK <- GL.get $ GL.compileStatus vs unless vsOK $ do - hPutStrLn stderr "Error in vertex shader\n" + log <- GL.shaderInfoLog vs + hPutStrLn stderr ("Error in vertex shader\n" <> log) exitFailure -- Do it again for the fragment shader @@ -28,13 +29,13 @@ initShaders = do GL.compileShader fs fsOK <- GL.get $ GL.compileStatus fs unless fsOK $ do - hPutStrLn stderr "Error in fragment shader\n" + log <- GL.shaderInfoLog fs + hPutStrLn stderr ("Error in fragment shader\n" <> log) exitFailure program <- GL.createProgram GL.attachShader program vs GL.attachShader program fs - GL.attribLocation program "coord2d" $= GL.AttribLocation 0 GL.linkProgram program linkOK <- GL.get $ GL.linkStatus program GL.validateProgram program @@ -46,4 +47,4 @@ initShaders = do exitFailure GL.currentProgram $= Just program - return (program, GL.AttribLocation 0) + return program |