Safe Haskell | None |
---|---|
Language | Haskell2010 |
- defaultOpenGL :: OpenGLConfig
- data OpenGLConfig = OpenGLConfig {}
- data GLContext
- glCreateContext :: (Functor m, MonadIO m) => Window -> m GLContext
- data Profile
- data Mode
- glMakeCurrent :: (Functor m, MonadIO m) => Window -> GLContext -> m ()
- glDeleteContext :: MonadIO m => GLContext -> m ()
- glGetDrawableSize :: MonadIO m => Window -> m (V2 CInt)
- glSwapWindow :: MonadIO m => Window -> m ()
- data SwapInterval
- swapInterval :: StateVar SwapInterval
- glGetProcAddress :: MonadIO m => CString -> m (Ptr ())
Creating and Configuring OpenGL Contexts
defaultOpenGL :: OpenGLConfig Source #
A set of default options for OpenGLConfig
defaultOpenGL
=OpenGLConfig
{glColorPrecision
= V4 8 8 8 0 ,glDepthPrecision
= 24 ,glStencilPrecision
= 8 ,glMultisampleSamples
= 1 ,glProfile
=Compatibility
Normal
2 1 }
data OpenGLConfig Source #
Configuration used when creating an OpenGL rendering context.
OpenGLConfig | |
|
glCreateContext :: (Functor m, MonadIO m) => Window -> m GLContext Source #
Create a new OpenGL context and makes it the current context for the window.
Throws SDLException
if the window wasn't configured with OpenGL
support, or if context creation fails.
See SDL_GL_CreateContext
for C documentation.
The profile a driver should use when creating an OpenGL context.
Core Mode CInt CInt | Use the OpenGL core profile, with a given major and minor version |
Compatibility Mode CInt CInt | Use the compatibilty profile with a given major and minor version. The compatibility profile allows you to use deprecated functions such as immediate mode |
ES Mode CInt CInt | Use an OpenGL profile for embedded systems |
The mode a driver should use when creating an OpenGL context.
glMakeCurrent :: (Functor m, MonadIO m) => Window -> GLContext -> m () Source #
Set up an OpenGL context for rendering into an OpenGL window.
Throws SDLException
on failure.
See SDL_GL_MakeCurrent
for C documentation.
glDeleteContext :: MonadIO m => GLContext -> m () Source #
Delete the given OpenGL context.
You must make sure that there are no pending commands in the OpenGL command queue, the driver may still be processing commands even if you have stopped issuing them!
The glFinish
command will block until the command queue has been fully
processed. You should call that function before deleting a context.
See SDL_GL_DeleteContext
for C documentation.
Querying for the drawable size without a Renderer
glGetDrawableSize :: MonadIO m => Window -> m (V2 CInt) Source #
Get the size of a window's underlying drawable area in pixels (for use with glViewport).
It may differ from windowSize
if window was created with windowHighDPI
flag.
Swapping
The process of "swapping" means to move the back-buffer into the window contents itself.
glSwapWindow :: MonadIO m => Window -> m () Source #
Replace the contents of the front buffer with the back buffer's. The
contents of the back buffer are undefined, clear them with glClear
or
equivalent before drawing to them again.
See SDL_GL_SwapWindow
for C documentation.
data SwapInterval Source #
The swap interval for the current OpenGL context.
ImmediateUpdates | No vertical retrace synchronization |
SynchronizedUpdates | The buffer swap is synchronized with the vertical retrace |
LateSwapTearing |
swapInterval :: StateVar SwapInterval Source #
Get or set the swap interval for the current OpenGL context.
This StateVar
can be modified using $=
and the current value retrieved with get
.
See SDL_GL_SetSwapInterval
and SDL_GL_GetSwapInterval
for C documentation.