gruff-0.3.4: src/Shader.hs
module Shader (shader) where
import qualified Data.ByteString as BS
import Graphics.Rendering.OpenGL
shader :: Maybe FilePath -> Maybe FilePath -> IO Program
shader mV mF = do
p <- createProgram
vs <- case mV of
Nothing -> return []
Just v -> do
vert <- createShader VertexShader
source <- BS.readFile v
shaderSourceBS vert $= source
compileShader vert
-- print =<< get (shaderInfoLog vert)
return [vert]
fs <- case mF of
Nothing -> return []
Just f -> do
frag <- createShader FragmentShader
source <- BS.readFile f
shaderSourceBS frag $= source
compileShader frag
-- print =<< get (shaderInfoLog frag)
return [frag]
attachedShaders p $= (vs ++ fs)
linkProgram p
-- print =<< get (programInfoLog p)
return p