lambdacube-engine-0.1.1: Graphics/LambdaCube/Texture.hs
module Graphics.LambdaCube.Texture where
import Graphics.LambdaCube.Types
import Graphics.LambdaCube.PixelFormat
import Graphics.LambdaCube.HardwareBuffer
-- | Enum identifying the texture usage
data TextureUsage
= TextureUsage
{ tuUsage :: Usage
, tuAutoMipmap :: Bool -- ^ mipmaps will be automatically generated for this texture
, tuRenderTarget :: Bool -- ^ this texture will be a render target, i.e. used as a target for render to texture
-- setting this flag will ignore all other texture usages except TU_AUTOMIPMAP
}
deriving Eq
{-
enum TextureUsage
{
/// @copydoc HardwareBuffer::Usage
TU_STATIC = HardwareBuffer::HBU_STATIC,
TU_DYNAMIC = HardwareBuffer::HBU_DYNAMIC,
TU_WRITE_ONLY = HardwareBuffer::HBU_WRITE_ONLY,
TU_STATIC_WRITE_ONLY = HardwareBuffer::HBU_STATIC_WRITE_ONLY,
TU_DYNAMIC_WRITE_ONLY = HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY,
TU_DYNAMIC_WRITE_ONLY_DISCARDABLE = HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE,
/// mipmaps will be automatically generated for this texture
TU_AUTOMIPMAP = 0x100,
/// this texture will be a render target, i.e. used as a target for render to texture
/// setting this flag will ignore all other texture usages except TU_AUTOMIPMAP
TU_RENDERTARGET = 0x200,
/// default to automatic mipmap generation static textures
TU_DEFAULT = TU_AUTOMIPMAP | TU_STATIC_WRITE_ONLY
};
-}
-- | Enum identifying the texture type
data TextureType
= TEX_TYPE_1D -- ^ 1D texture, used in combination with 1D texture coordinates
| TEX_TYPE_2D -- ^ 2D texture, used in combination with 2D texture coordinates (default)
| TEX_TYPE_3D -- ^ 3D volume texture, used in combination with 3D texture coordinates
| TEX_TYPE_CUBE_MAP -- ^ 3D cube map, used in combination with 3D texture coordinates
deriving (Eq,Show)
-- | Enum identifying special mipmap numbers
data TextureMipmap
= MIP_UNLIMITED -- ^ Generate mipmaps up to 1x1
| MIP_DEFAULT -- ^ Use TextureManager default
| MIP_NUMBER Int
deriving Eq
class (Eq a, HardwareBuffer a) => Texture a where
txName :: a -> String
txWidth :: a -> Int
txHeight :: a -> Int
txDepth :: a -> Int
txNumRequestedMipmaps :: a -> TextureMipmap
txNumMipmaps :: a -> Int
txMipmapsHardwareGenerated :: a -> Bool
txGamma :: a -> FloatType
txHwGamma :: a -> Bool
txFSAA :: a -> Int
txFSAAHint :: a -> String
txTextureType :: a -> TextureType
txFormat :: a -> PixelFormat
--txUsage :: a -> TextureUsage
txAutoMipmap :: a -> Bool -- ^ mipmaps will be automatically generated for this texture
txRenderTarget :: a -> Bool -- ^ this texture will be a render target, i.e. used as a target for render to texture
-- setting this flag will ignore all other texture usages except TU_AUTOMIPMAP
txSrcFormat :: a -> PixelFormat
txSrcWidth :: a -> Int
txSrcHeight :: a -> Int
txSrcDepth :: a -> Int
txDesiredFormat :: a -> PixelFormat
txDesiredIntegerBitDepth :: a -> Int
txDesiredFloatBitDepth :: a -> Int
txTreatLuminanceAsAlpha :: a -> Bool