Sparkle 0.0.1
Loading...
Searching...
No Matches
spk::OpenGL::ViewRegion Class Reference

Manages viewport and scissor rectangles and clearing. More...

#include <spk_view_region.hpp>

Collaboration diagram for spk::OpenGL::ViewRegion:
Collaboration graph

Public Types

enum class  ClearMode { Color , Depth , Stencil }
 Buffer types that can be cleared.
using ClearMask = spk::Flags<ClearMode>
 Mask of buffers to clear at once.

Public Member Functions

void setViewport (const spk::Extend2D &p_extend) noexcept
 Sets the GL viewport rectangle.
void setScissor (const spk::Extend2D &p_extend) noexcept
 Sets the GL scissor rectangle.
const spk::Extend2Dviewport () const noexcept
 Returns current viewport settings.
const spk::Extend2Dscissor () const noexcept
 Returns current scissor settings.
void apply () const
 Applies viewport and scissor to OpenGL state.

Static Public Member Functions

static size_t maxLayer () noexcept
 Returns the current configured maximum layer value.
static void setMaxLayer (size_t p_maxLayer) noexcept
 Sets the maximum layer value used for depth mapping.
static void setWindowSize (const spk::Extend2D &p_windowSize) noexcept
 Sets the logical window size used for Y inversion (top-left -> bottom-left).
static const spk::Extend2DwindowSize () noexcept
 Returns the current window size.
static const spk::OpenGL::ViewRegionactiveViewRegion ()
 Returns the active view region used for OpenGL operations.
static void clear (const Color &p_backgroundColor, const ClearMask &p_clearMask=defaultClearMask)
 Clears framebuffer with given color and mask.
static spk::Vector3 convertScreenToOpenGL (const spk::Vector2Int &p_screenPosition, float p_layer=0.0f) noexcept
 Converts a screen-space pixel position to OpenGL normalized device coordinates.
static spk::Vector2Int convertOpenGLToScreen (const spk::Vector2 &p_openGLPosition, float p_layer=0.0f) noexcept
 Converts an OpenGL normalized position back to screen-space pixels.

Static Public Attributes

static const ClearMask defaultClearMask
 Default mask clearing color, depth, and stencil.

Detailed Description

Manages viewport and scissor rectangles and clearing.

region.setViewport({0, 0, 1280, 720});
region.setScissor({0, 0, 640, 480});
region.apply();
Manages viewport and scissor rectangles and clearing.
Definition spk_view_region.hpp:26
void setScissor(const spk::Extend2D &p_extend) noexcept
Sets the GL scissor rectangle.
Definition spk_view_region.cpp:111
void apply() const
Applies viewport and scissor to OpenGL state.
Definition spk_view_region.cpp:151
void setViewport(const spk::Extend2D &p_extend) noexcept
Sets the GL viewport rectangle.
Definition spk_view_region.cpp:106

Member Function Documentation

◆ activeViewRegion()

const spk::OpenGL::ViewRegion * spk::OpenGL::ViewRegion::activeViewRegion ( )
static

Returns the active view region used for OpenGL operations.

Returns
Pointer to the active view region or nullptr.

◆ clear()

void spk::OpenGL::ViewRegion::clear ( const Color & p_backgroundColor,
const ClearMask & p_clearMask = defaultClearMask )
static

Clears framebuffer with given color and mask.

Parameters
p_backgroundColorClear color.
p_clearMaskBuffers to clear.
Here is the caller graph for this function:

◆ convertOpenGLToScreen()

spk::Vector2Int spk::OpenGL::ViewRegion::convertOpenGLToScreen ( const spk::Vector2 & p_openGLPosition,
float p_layer = 0.0f )
staticnoexcept

Converts an OpenGL normalized position back to screen-space pixels.

Parameters
p_openGLPositionNormalized device coordinates.
p_layerLayer value to map back into pixel space (default 0).
Returns
Position expressed in pixels relative to the active viewport (origin at top-left).

◆ convertScreenToOpenGL()

spk::Vector3 spk::OpenGL::ViewRegion::convertScreenToOpenGL ( const spk::Vector2Int & p_screenPosition,
float p_layer = 0.0f )
staticnoexcept

Converts a screen-space pixel position to OpenGL normalized device coordinates.

Parameters
p_screenPositionPosition expressed in pixels with an origin at the top-left of the viewport.
p_layerLayer value to map into normalized coordinates (default 0).
Returns
Position in the range [-1, 1] relative to the active viewport.

◆ maxLayer()

size_t spk::OpenGL::ViewRegion::maxLayer ( )
staticnoexcept

Returns the current configured maximum layer value.

Returns
Current max layer.
Here is the caller graph for this function:

◆ scissor()

const spk::Extend2D & spk::OpenGL::ViewRegion::scissor ( ) const
noexcept

Returns current scissor settings.

Returns
Scissor extend.
Here is the caller graph for this function:

◆ setMaxLayer()

void spk::OpenGL::ViewRegion::setMaxLayer ( size_t p_maxLayer)
staticnoexcept

Sets the maximum layer value used for depth mapping.

Parameters
p_maxLayerNew maximum layer.
Here is the caller graph for this function:

◆ setScissor()

void spk::OpenGL::ViewRegion::setScissor ( const spk::Extend2D & p_extend)
noexcept

Sets the GL scissor rectangle.

Parameters
p_extendScissor bounds.

◆ setViewport()

void spk::OpenGL::ViewRegion::setViewport ( const spk::Extend2D & p_extend)
noexcept

Sets the GL viewport rectangle.

Parameters
p_extendViewport bounds.

◆ setWindowSize()

void spk::OpenGL::ViewRegion::setWindowSize ( const spk::Extend2D & p_windowSize)
staticnoexcept

Sets the logical window size used for Y inversion (top-left -> bottom-left).

Parameters
p_windowSizeWindow extent in pixels.

◆ viewport()

const spk::Extend2D & spk::OpenGL::ViewRegion::viewport ( ) const
noexcept

Returns current viewport settings.

Returns
Viewport extend.

◆ windowSize()

const spk::Extend2D & spk::OpenGL::ViewRegion::windowSize ( )
staticnoexcept

Returns the current window size.

Returns
Window extent in pixels.

Member Data Documentation

◆ defaultClearMask

const ViewRegion::ClearMask spk::OpenGL::ViewRegion::defaultClearMask
static
Initial value:
{
ViewRegion::ClearMode::Color,
ViewRegion::ClearMode::Depth,
ViewRegion::ClearMode::Stencil}

Default mask clearing color, depth, and stencil.


The documentation for this class was generated from the following files: