aboutsummaryrefslogtreecommitdiffstats
path: root/src/Vivant/Shader.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Vivant/Shader.hs')
-rw-r--r--src/Vivant/Shader.hs15
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