module Graphics.Rendering.OpenGL.GL.Shaders.Attribs (
attribLocation, VariableType(..), activeAttribs,
) where
import Data.StateVar
import Graphics.Rendering.OpenGL.GL.ByteString
import Graphics.Rendering.OpenGL.GL.QueryUtils
import Graphics.Rendering.OpenGL.GL.Shaders.Program
import Graphics.Rendering.OpenGL.GL.Shaders.Variables
import Graphics.GL
activeAttributes :: Program -> GettableStateVar GLuint
activeAttributes :: Program -> GettableStateVar GLuint
activeAttributes = forall a.
(GLint -> a) -> GetProgramPName -> Program -> GettableStateVar a
programVar1 forall a b. (Integral a, Num b) => a -> b
fromIntegral GetProgramPName
ActiveAttributes
activeAttributeMaxLength :: Program -> GettableStateVar GLsizei
activeAttributeMaxLength :: Program -> GettableStateVar GLint
activeAttributeMaxLength = forall a.
(GLint -> a) -> GetProgramPName -> Program -> GettableStateVar a
programVar1 forall a b. (Integral a, Num b) => a -> b
fromIntegral GetProgramPName
ActiveAttributeMaxLength
attribLocation :: Program -> String -> StateVar AttribLocation
attribLocation :: Program -> String -> StateVar AttribLocation
attribLocation Program
program String
name =
forall a. IO a -> (a -> IO ()) -> StateVar a
makeStateVar (Program -> String -> IO AttribLocation
getAttribLocation Program
program String
name)
(\AttribLocation
location -> Program -> AttribLocation -> String -> IO ()
bindAttribLocation Program
program AttribLocation
location String
name)
getAttribLocation :: Program -> String -> IO AttribLocation
getAttribLocation :: Program -> String -> IO AttribLocation
getAttribLocation (Program GLuint
program) String
name =
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (GLuint -> AttribLocation
AttribLocation forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) forall a b. (a -> b) -> a -> b
$
forall a. String -> (Ptr GLchar -> IO a) -> IO a
withGLstring String
name forall a b. (a -> b) -> a -> b
$
forall (m :: * -> *). MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetAttribLocation GLuint
program
bindAttribLocation :: Program -> AttribLocation -> String -> IO ()
bindAttribLocation :: Program -> AttribLocation -> String -> IO ()
bindAttribLocation (Program GLuint
program) (AttribLocation GLuint
location) String
name =
forall a. String -> (Ptr GLchar -> IO a) -> IO a
withGLstring String
name forall a b. (a -> b) -> a -> b
$
forall (m :: * -> *).
MonadIO m =>
GLuint -> GLuint -> Ptr GLchar -> m ()
glBindAttribLocation GLuint
program GLuint
location
activeAttribs :: Program -> GettableStateVar [(GLint,VariableType,String)]
activeAttribs :: Program -> GettableStateVar [(GLint, VariableType, String)]
activeAttribs =
forall a.
(Program -> GettableStateVar GLuint)
-> (Program -> GettableStateVar GLint)
-> (GLuint
-> GLuint
-> GLint
-> Ptr GLint
-> Ptr GLint
-> Ptr GLuint
-> Ptr GLchar
-> IO ())
-> (GLuint -> a)
-> Program
-> GettableStateVar [(GLint, a, String)]
activeVars
Program -> GettableStateVar GLuint
activeAttributes
Program -> GettableStateVar GLint
activeAttributeMaxLength
forall (m :: * -> *).
MonadIO m =>
GLuint
-> GLuint
-> GLint
-> Ptr GLint
-> Ptr GLint
-> Ptr GLuint
-> Ptr GLchar
-> m ()
glGetActiveAttrib
GLuint -> VariableType
unmarshalVariableType