caramia-0.7.2.2: demos/textures/Main.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Main ( main ) where
import Graphics.Caramia
import Graphics.Caramia.Prelude hiding ( init )
import Graphics.UI.SDL
import Data.Bits
import Foreign.C.String
main :: IO ()
main =
withCString "smoke-test" $ \cstr -> do
_ <- glSetAttribute SDL_GL_CONTEXT_MAJOR_VERSION 3
_ <- glSetAttribute SDL_GL_CONTEXT_MINOR_VERSION 3
_ <- glSetAttribute SDL_GL_CONTEXT_PROFILE_MASK SDL_GL_CONTEXT_PROFILE_CORE
_ <- glSetAttribute SDL_GL_CONTEXT_FLAGS SDL_GL_CONTEXT_DEBUG_FLAG
window <- createWindow cstr SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED
500 500
(SDL_WINDOW_OPENGL .|.
SDL_WINDOW_SHOWN)
_ <- glCreateContext window
giveContext $ do
putStrLn "Attempting to create all sorts of textures..."
putStrLn "(check OpenGL debug log to see that everything works)"
for_ [(topo, format) |
topo <- topologies, format <- formats] $ \(topo, format) -> do
print (topo, format)
void $ newTexture textureSpecification { topology = topo
, imageFormat = format
, mipmapLevels = 4 }
runPendingFinalizers
topologies :: [Topology]
topologies =
[Tex1D { width1D = 256 }
,Tex2D { height2D = 512, width2D = 512 }
,Tex3D { width3D = 256, height3D = 256, depth3D = 4 }
,Tex1DArray { width1DArray = 64, layers1D = 100 }
,Tex2DArray { width2DArray = 32, height2DArray = 64, layers2D = 19 }
,Tex2DMultisample { width2DMS = 1024, height2DMS = 64
, samples2DMS = 4
, fixedSampleLocations2DMS = False }
,Tex2DMultisample { width2DMS = 1024, height2DMS = 64
, samples2DMS = 4
, fixedSampleLocations2DMS = True }
,Tex2DMultisampleArray { width2DMSArray = 1024, height2DMSArray = 64
, layers2DMS = 2
, samples2DMSArray = 4
, fixedSampleLocations2DMSArray = False }
,Tex2DMultisampleArray { width2DMSArray = 1024, height2DMSArray = 64
, layers2DMS = 2
, samples2DMSArray = 4
, fixedSampleLocations2DMSArray = True }
,TexCube { widthCube = 512 }]
formats :: [ImageFormat]
formats =
[
R8
, R8I
, R8UI
, R16
, R16I
, R16UI
, R16F
, R32F
, R32I
, R32UI
, RG8
, RG8I
, RG8UI
, RG16
, RG16I
, RG16UI
, RG16F
, RG32F
, RG32I
, RG32UI
, R11F_G11F_B10F
, RGBA32F
, RGBA32I
, RGBA32UI
, RGBA16
, RGBA16F
, RGBA16I
, RGBA16UI
, RGBA8
, RGBA8UI
, SRGB8_ALPHA8
, RGB10_A2
, RGB32F
, RGB32I
, RGB32UI
, RGB16F
, RGB16I
, RGB16UI
, RGB16
, RGB8
, RGB8I
, RGB8UI
, SRGB8
, RGB9_E5
, COMPRESSED_RG_RGTC2
, COMPRESSED_SIGNED_RG_RGTC2
, COMPRESSED_RED_RGTC1
, COMPRESSED_SIGNED_RED_RGTC1
, COMPRESSED_RGB_S3TC_DXT1
, COMPRESSED_RGBA_S3TC_DXT1
, COMPRESSED_RGBA_S3TC_DXT3
, COMPRESSED_RGBA_S3TC_DXT5
, COMPRESSED_SRGB_S3TC_DXT1
, COMPRESSED_SRGB_ALPHA_S3TC_DXT1
, COMPRESSED_SRGB_ALPHA_S3TC_DXT3
, COMPRESSED_SRGB_ALPHA_S3TC_DXT5
, DEPTH_COMPONENT32
, DEPTH_COMPONENT32F
, DEPTH_COMPONENT24
, DEPTH_COMPONENT16
, DEPTH32F_STENCIL8
, DEPTH24_STENCIL8]