packages feed

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