Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Buffer a
- type GLArray a = Vector a
- class Storable (Element a) => MakeArray a where
- glLoad :: forall a. MakeArray a => BufferUsage -> a -> GL (Buffer (Element a))
- glReload :: forall a. MakeArray a => Buffer (Element a) -> Int -> a -> GL ()
- glRead :: forall a. Storable a => Buffer a -> Int -> Int -> GL (GLArray a)
- glModify :: forall a. Storable a => Buffer a -> Int -> Int -> (Vector a -> GL ()) -> GL ()
- glMap :: Storable a => (a -> GL a) -> Buffer a -> Int -> Int -> GL ()
- unsafeWithLen :: forall a b. Storable a => GLArray a -> (Int -> Ptr a -> IO b) -> IO b
- data BufferUsage
- app2gl :: BufferUsage
- app2glDyn :: BufferUsage
- app2glStream :: BufferUsage
- gl2app :: BufferUsage
- gl2appDyn :: BufferUsage
- gl2appStream :: BufferUsage
- gl2gl :: BufferUsage
- gl2glDyn :: BufferUsage
- gl2glStream :: BufferUsage
- bindBuffer :: BufferSlot -> Buffer a -> GL ()
- bindBufferRange :: BufferSlot -> GLuint -> Buffer a -> Int -> Int -> GL ()
- bindBufferBase :: BufferSlot -> GLuint -> Buffer a -> GL ()
- bufferData :: BufferSlot -> BufferUsage -> Int -> Ptr a -> GL ()
- bufferSubData :: BufferSlot -> Int -> Int -> Ptr a -> GL ()
- unmapBuffer :: BufferSlot -> GL Bool
- mapBufferRange :: BufferSlot -> Int -> Int -> GLbitfield -> GL (Ptr a)
- flashMappedBufferRange :: BufferSlot -> Int -> Int -> GL ()
- map_read_bit :: GLbitfield
- map_write_bit :: GLbitfield
- map_invalidate_range_bit :: GLbitfield
- map_invalidate_buffer_bit :: GLbitfield
- map_flush_explicit_bit :: GLbitfield
- map_unsynchronized_bit :: GLbitfield
- copyBufferSubData :: BufferSlot -> BufferSlot -> Int -> Int -> Int -> GL ()
- data BufferSlot
- array_buffer :: BufferSlot
- element_array_buffer :: BufferSlot
- pixel_pack_buffer :: BufferSlot
- pixel_unpack_buffer :: BufferSlot
- uniform_buffer :: BufferSlot
- transform_feedback_buffer :: BufferSlot
- copy_read_buffer :: BufferSlot
- copy_write_buffer :: BufferSlot
Buffer
Constructing Mutable Buffers
glLoad :: forall a. MakeArray a => BufferUsage -> a -> GL (Buffer (Element a)) Source
Create and initialize a Buffer
storage on GPU working memory.
- Int → O(1) New Buffer with specified number of elements initialized to zeros.
- ([a], Int) → O(n) New Buffer made of given list upto n th element.
- [a] → O(n) New Buffer made of given list. Same as (xs, length xs)
ByteString
→ head O(1) otherwise O(n) New Buffer fromByteString
. Might be copied when necessary.GLArray
→ Unsafe O(1) Use passedStorableArray
as client-side Buffer.
glLoad app2gl (10::Int) :: GL (Buffer Vec4) glLoad app2gl ([V2 1 1],4::Int) :: GL (Buffer Vec2) glLoad app2gl uv :: GL (Buffer (V2 Word8)) glLoad app2gl bs :: GL (Buffer Float) glLoad app2gl (model :: GLArray Model) :: GL (Buffer Model)
Updating Mutable Buffers
data BufferUsage Source
STATIC_DRAW (Default)
app2glDyn :: BufferUsage Source
DYNAMIC_DRAW
app2glStream :: BufferUsage Source
STREAM_DRAW
STATIC_READ
gl2appDyn :: BufferUsage Source
DYNAMIC_READ
gl2appStream :: BufferUsage Source
STREAM_READ
STATIC_COPY
gl2glDyn :: BufferUsage Source
DYNAMIC_COPY
gl2glStream :: BufferUsage Source
STREAM_COPY
Raw Buffer Operations
bindBuffer :: BufferSlot -> Buffer a -> GL () Source
bindBufferRange :: BufferSlot -> GLuint -> Buffer a -> Int -> Int -> GL () Source
bindBufferBase :: BufferSlot -> GLuint -> Buffer a -> GL () Source
bufferData :: BufferSlot -> BufferUsage -> Int -> Ptr a -> GL () Source
bufferSubData :: BufferSlot -> Int -> Int -> Ptr a -> GL () Source
3+ | GL_OES_mapbuffer glUnmapBufferOES
unmapBuffer :: BufferSlot -> GL Bool Source
GL_OES_mapbuffer (*GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); define GL_WRITE_ONLY_OES 0x88B9 | 3+ | GL_EXT_map_buffer_range glMapBufferRangeEXT glFlushMappedBufferRangeEXT
mapBufferRange :: BufferSlot -> Int -> Int -> GLbitfield -> GL (Ptr a) Source
flashMappedBufferRange :: BufferSlot -> Int -> Int -> GL () Source
3+ | GL_NV_copy_buffer glCopyBufferSubDataNV
copyBufferSubData :: BufferSlot -> BufferSlot -> Int -> Int -> Int -> GL () Source
data BufferSlot Source
ES 3+
3+ or GL_NV_copy_buffer