module Graphics.Rendering.OpenGL.GL.ConditionalRendering (
ConditionalRenderMode(..),
beginConditionalRender, endConditionalRender, withConditionalRender
) where
import Graphics.Rendering.OpenGL.GL.Exception
import Graphics.Rendering.OpenGL.GL.QueryObject
import Graphics.GL
data ConditionalRenderMode =
QueryWait
| QueryNoWait
| QueryByRegionWait
| QueryByRegionNoWait
deriving ( ConditionalRenderMode -> ConditionalRenderMode -> Bool
(ConditionalRenderMode -> ConditionalRenderMode -> Bool)
-> (ConditionalRenderMode -> ConditionalRenderMode -> Bool)
-> Eq ConditionalRenderMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
$c/= :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
== :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
$c== :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
Eq, Eq ConditionalRenderMode
Eq ConditionalRenderMode
-> (ConditionalRenderMode -> ConditionalRenderMode -> Ordering)
-> (ConditionalRenderMode -> ConditionalRenderMode -> Bool)
-> (ConditionalRenderMode -> ConditionalRenderMode -> Bool)
-> (ConditionalRenderMode -> ConditionalRenderMode -> Bool)
-> (ConditionalRenderMode -> ConditionalRenderMode -> Bool)
-> (ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode)
-> (ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode)
-> Ord ConditionalRenderMode
ConditionalRenderMode -> ConditionalRenderMode -> Bool
ConditionalRenderMode -> ConditionalRenderMode -> Ordering
ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode
$cmin :: ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode
max :: ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode
$cmax :: ConditionalRenderMode
-> ConditionalRenderMode -> ConditionalRenderMode
>= :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
$c>= :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
> :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
$c> :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
<= :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
$c<= :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
< :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
$c< :: ConditionalRenderMode -> ConditionalRenderMode -> Bool
compare :: ConditionalRenderMode -> ConditionalRenderMode -> Ordering
$ccompare :: ConditionalRenderMode -> ConditionalRenderMode -> Ordering
Ord, Int -> ConditionalRenderMode -> ShowS
[ConditionalRenderMode] -> ShowS
ConditionalRenderMode -> String
(Int -> ConditionalRenderMode -> ShowS)
-> (ConditionalRenderMode -> String)
-> ([ConditionalRenderMode] -> ShowS)
-> Show ConditionalRenderMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ConditionalRenderMode] -> ShowS
$cshowList :: [ConditionalRenderMode] -> ShowS
show :: ConditionalRenderMode -> String
$cshow :: ConditionalRenderMode -> String
showsPrec :: Int -> ConditionalRenderMode -> ShowS
$cshowsPrec :: Int -> ConditionalRenderMode -> ShowS
Show )
marshalConditionalRenderMode :: ConditionalRenderMode -> GLenum
marshalConditionalRenderMode :: ConditionalRenderMode -> GLenum
marshalConditionalRenderMode ConditionalRenderMode
x = case ConditionalRenderMode
x of
ConditionalRenderMode
QueryWait -> GLenum
GL_QUERY_WAIT
ConditionalRenderMode
QueryNoWait -> GLenum
GL_QUERY_NO_WAIT
ConditionalRenderMode
QueryByRegionWait -> GLenum
GL_QUERY_BY_REGION_WAIT
ConditionalRenderMode
QueryByRegionNoWait -> GLenum
GL_QUERY_BY_REGION_NO_WAIT
beginConditionalRender :: QueryObject -> ConditionalRenderMode -> IO ()
beginConditionalRender :: QueryObject -> ConditionalRenderMode -> IO ()
beginConditionalRender QueryObject
q =
GLenum -> GLenum -> IO ()
forall (m :: * -> *). MonadIO m => GLenum -> GLenum -> m ()
glBeginConditionalRender (QueryObject -> GLenum
queryID QueryObject
q) (GLenum -> IO ())
-> (ConditionalRenderMode -> GLenum)
-> ConditionalRenderMode
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConditionalRenderMode -> GLenum
marshalConditionalRenderMode
endConditionalRender :: IO ()
endConditionalRender :: IO ()
endConditionalRender = IO ()
forall (m :: * -> *). MonadIO m => m ()
glEndConditionalRender
withConditionalRender :: QueryObject -> ConditionalRenderMode -> IO a -> IO a
withConditionalRender :: forall a. QueryObject -> ConditionalRenderMode -> IO a -> IO a
withConditionalRender QueryObject
q ConditionalRenderMode
m =
IO () -> IO () -> IO a -> IO a
forall a b c. IO a -> IO b -> IO c -> IO c
bracket_ (QueryObject -> ConditionalRenderMode -> IO ()
beginConditionalRender QueryObject
q ConditionalRenderMode
m) IO ()
endConditionalRender