sead
Loading...
Searching...
No Matches
sead::Graphics Class Reference

#include <seadGraphics.h>

Inherits sead::IDisposer.

Inherited by sead::GraphicsCafe.

Public Types

enum  DevicePosture {
  cDevicePosture_Same = 0 , cDevicePosture_RotateRight = 1 , cDevicePosture_RotateLeft = 2 , cDevicePosture_RotateHalfAround = 3 ,
  cDevicePosture_FlipX = 4 , cDevicePosture_FlipY = 5 , cDevicePosture_FlipXY = 3 , cDevicePosture_Invalid = 4
}
enum  DepthFunc {
  cDepthFunc_Never = GX2_COMPARE_NEVER , cDepthFunc_Less = GX2_COMPARE_LESS , cDepthFunc_Equal = GX2_COMPARE_EQUAL , cDepthFunc_LessEqual = GX2_COMPARE_LEQUAL ,
  cDepthFunc_Greater = GX2_COMPARE_GREATER , cDepthFunc_NotEqual = GX2_COMPARE_NOTEQUAL , cDepthFunc_GreaterEqual = GX2_COMPARE_GEQUAL , cDepthFunc_Always = GX2_COMPARE_ALWAYS
}
enum  CullingMode { cCullingMode_Front = 0 , cCullingMode_Back = 1 , cCullingMode_None = 2 , cCullingMode_All = 3 }
enum  BlendFactor {
  cBlendFactor_Zero = GX2_BLEND_ZERO , cBlendFactor_One = GX2_BLEND_ONE , cBlendFactor_SrcColor = GX2_BLEND_SRC_COLOR , cBlendFactor_InvSrcColor = GX2_BLEND_ONE_MINUS_SRC_COLOR ,
  cBlendFactor_SrcAlpha = GX2_BLEND_SRC_ALPHA , cBlendFactor_InvSrcAlpha = GX2_BLEND_ONE_MINUS_SRC_ALPHA , cBlendFactor_DstAlpha = GX2_BLEND_DST_ALPHA , cBlendFactor_InvDstAlpha = GX2_BLEND_ONE_MINUS_DST_ALPHA ,
  cBlendFactor_DstColor = GX2_BLEND_DST_COLOR , cBlendFactor_InvDstColor = GX2_BLEND_ONE_MINUS_DST_COLOR , cBlendFactor_SrcAlphaSaturate = GX2_BLEND_SRC_ALPHA_SATURATE , cBlendFactor_ConstantColor = GX2_BLEND_CONSTANT_COLOR ,
  cBlendFactor_InvConstantColor = GX2_BLEND_ONE_MINUS_CONSTANT_COLOR , cBlendFactor_ConstantAlpha = GX2_BLEND_CONSTANT_ALPHA , cBlendFactor_InvConstantAlpha = GX2_BLEND_ONE_MINUS_CONSTANT_ALPHA
}
enum  BlendEquation {
  cBlendEquation_Add = GX2_BLEND_COMBINE_ADD , cBlendEquation_Sub = GX2_BLEND_COMBINE_SRC_MINUS_DST , cBlendEquation_Min = GX2_BLEND_COMBINE_MIN , cBlendEquation_Max = GX2_BLEND_COMBINE_MAX ,
  cBlendEquation_ReverseSub = GX2_BLEND_COMBINE_DST_MINUS_SRC
}
enum  AlphaFunc {
  cAlphaFunc_Never = GX2_COMPARE_NEVER , cAlphaFunc_Less = GX2_COMPARE_LESS , cAlphaFunc_Equal = GX2_COMPARE_EQUAL , cAlphaFunc_LessEqual = GX2_COMPARE_LEQUAL ,
  cAlphaFunc_Greater = GX2_COMPARE_GREATER , cAlphaFunc_NotEqual = GX2_COMPARE_NOTEQUAL , cAlphaFunc_GreaterEqual = GX2_COMPARE_GEQUAL , cAlphaFunc_Always = GX2_COMPARE_ALWAYS
}
enum  StencilFunc {
  cStencilFunc_Never = GX2_COMPARE_NEVER , cStencilFunc_Less = GX2_COMPARE_LESS , cStencilFunc_Equal = GX2_COMPARE_EQUAL , cStencilFunc_LessEqual = GX2_COMPARE_LEQUAL ,
  cStencilFunc_Greater = GX2_COMPARE_GREATER , cStencilFunc_NotEqual = GX2_COMPARE_NOTEQUAL , cStencilFunc_GreaterEqual = GX2_COMPARE_GEQUAL , cStencilFunc_Always = GX2_COMPARE_ALWAYS
}
enum  StencilOp {
  cStencilOp_Keep = GX2_STENCIL_KEEP , cStencilOp_Zero = GX2_STENCIL_ZERO , cStencilOp_Replace = GX2_STENCIL_REPLACE , cStencilOp_Increment = GX2_STENCIL_INCR ,
  cStencilOp_Decrement = GX2_STENCIL_DECR , cStencilOp_Invert = GX2_STENCIL_INVERT , cStencilOp_IncrementWrap = GX2_STENCIL_INCR_WRAP , cStencilOp_DecrementWrap = GX2_STENCIL_DECR_WRAP
}
enum  PolygonMode { cPolygonMode_Point = GX2_POLYGON_MODE_POINT , cPolygonMode_Line = GX2_POLYGON_MODE_LINE , cPolygonMode_Fill = GX2_POLYGON_MODE_TRIANGLE }

Public Member Functions

 Graphics ()
 ~Graphics () override
void setViewportRealPosition (f32 x, f32 y, f32 w, f32 h)
void setScissorRealPosition (f32 x, f32 y, f32 w, f32 h)
void setDepthEnable (bool test_enable, bool write_enable)
void setDepthFunc (Graphics::DepthFunc func)
void setBlendEnable (bool enable)
void setBlendFactor (BlendFactor src_factor, BlendFactor dst_factor)
void setBlendFactorSeparate (BlendFactor src_factor_rgb, BlendFactor dst_factor_rgb, BlendFactor src_factor_a, BlendFactor dst_factor_a)
void setBlendFactorMRT (u32 target, BlendFactor src_factor, BlendFactor dst_factor)
void setBlendFactorSeparateMRT (u32 target, BlendFactor src_factor_rgb, BlendFactor dst_factor_rgb, BlendFactor src_factor_a, BlendFactor dst_factor_a)
void setBlendEquation (BlendEquation equation)
void setBlendEquationSeparate (BlendEquation equation_rgb, BlendEquation equation_a)
void setBlendEquationMRT (u32 target, BlendEquation equation)
void setBlendEquationSeparateMRT (u32 target, BlendEquation equation_rgb, BlendEquation equation_a)
void setAlphaTestEnable (bool enable)
void lockDrawContext ()
void unlockDrawContext ()
Public Member Functions inherited from sead::IDisposer
 IDisposer ()
virtual ~IDisposer ()

Static Public Member Functions

static DevicePosture getDefaultDevicePosture ()
static f32 getDefaultDeviceZScale ()
static f32 getDefaultDeviceZOffset ()
static Graphicsinstance ()
static void setInstance (Graphics *impl)

Static Public Attributes

static const u32 cRenderTarget_Num = 8

Protected Member Functions

virtual void initializeImpl ()
virtual void setViewportImpl (f32 x, f32 y, f32 w, f32 h)
virtual void setScissorImpl (f32 x, f32 y, f32 w, f32 h)
virtual void setDepthTestEnableImpl (bool enable)
virtual void setDepthWriteEnableImpl (bool enable)
virtual void setDepthFuncImpl (DepthFunc func)
virtual bool setVBlankWaitIntervalImpl (u32 interval)
virtual void setCullingModeImpl (CullingMode mode)
virtual void setBlendEnableImpl (bool enable)
virtual void setBlendEnableMRTImpl (u32 target, bool enable)
virtual void setBlendFactorImpl (BlendFactor src_factor_rgb, BlendFactor dst_factor_rgb, BlendFactor src_factor_a, BlendFactor dst_factor_a)
virtual void setBlendFactorMRTImpl (u32 target, BlendFactor src_factor_rgb, BlendFactor dst_factor_rgb, BlendFactor src_factor_a, BlendFactor dst_factor_a)
virtual void setBlendEquationImpl (BlendEquation equation_rgb, BlendEquation equation_a)
virtual void setBlendEquationMRTImpl (u32 target, BlendEquation equation_rgb, BlendEquation equation_a)
virtual void setBlendConstantColorImpl (const Color4f &color)
virtual void lockDrawContextImpl ()
virtual void unlockDrawContextImpl ()
virtual void waitForVBlankImpl ()
virtual void setColorMaskImpl (bool r, bool g, bool b, bool a)
virtual void setColorMaskMRTImpl (u32 target, bool r, bool g, bool b, bool a)
virtual void setAlphaTestEnableImpl (bool enable)
virtual void setAlphaTestFuncImpl (AlphaFunc func, f32 ref)
virtual void setStencilTestEnableImpl (bool enable)
virtual void setStencilTestFuncImpl (StencilFunc func, s32 ref, u32 mask)
virtual void setStencilTestOpImpl (StencilOp fail, StencilOp zfail, StencilOp zpass)
virtual void setPolygonModeImpl (PolygonMode front, PolygonMode back)
virtual void setPolygonOffsetEnableImpl (bool fill_front_enable, bool fill_back_enable, bool point_line_enable)

Protected Attributes

ThreadmContextHolderThread
s32 mContextRefCounter
CriticalSection mContextCriticalSection

Static Protected Attributes

static GraphicssInstance = nullptr
static DevicePosture sDefaultDevicePosture = Graphics::cDevicePosture_Same
static f32 sDefaultDeviceZScale = 1.0f
static f32 sDefaultDeviceZOffset = 0.0f

Private Member Functions

 Graphics (const Graphics &)
const Graphicsoperator= (const Graphics &)

Member Enumeration Documentation

◆ DevicePosture

Enumerator
cDevicePosture_Same 
cDevicePosture_RotateRight 
cDevicePosture_RotateLeft 
cDevicePosture_RotateHalfAround 
cDevicePosture_FlipX 
cDevicePosture_FlipY 
cDevicePosture_FlipXY 
cDevicePosture_Invalid 

◆ DepthFunc

Enumerator
cDepthFunc_Never 
cDepthFunc_Less 
cDepthFunc_Equal 
cDepthFunc_LessEqual 
cDepthFunc_Greater 
cDepthFunc_NotEqual 
cDepthFunc_GreaterEqual 
cDepthFunc_Always 

◆ CullingMode

Enumerator
cCullingMode_Front 
cCullingMode_Back 
cCullingMode_None 
cCullingMode_All 

◆ BlendFactor

Enumerator
cBlendFactor_Zero 
cBlendFactor_One 
cBlendFactor_SrcColor 
cBlendFactor_InvSrcColor 
cBlendFactor_SrcAlpha 
cBlendFactor_InvSrcAlpha 
cBlendFactor_DstAlpha 
cBlendFactor_InvDstAlpha 
cBlendFactor_DstColor 
cBlendFactor_InvDstColor 
cBlendFactor_SrcAlphaSaturate 
cBlendFactor_ConstantColor 
cBlendFactor_InvConstantColor 
cBlendFactor_ConstantAlpha 
cBlendFactor_InvConstantAlpha 

◆ BlendEquation

Enumerator
cBlendEquation_Add 
cBlendEquation_Sub 
cBlendEquation_Min 
cBlendEquation_Max 
cBlendEquation_ReverseSub 

◆ AlphaFunc

Enumerator
cAlphaFunc_Never 
cAlphaFunc_Less 
cAlphaFunc_Equal 
cAlphaFunc_LessEqual 
cAlphaFunc_Greater 
cAlphaFunc_NotEqual 
cAlphaFunc_GreaterEqual 
cAlphaFunc_Always 

◆ StencilFunc

Enumerator
cStencilFunc_Never 
cStencilFunc_Less 
cStencilFunc_Equal 
cStencilFunc_LessEqual 
cStencilFunc_Greater 
cStencilFunc_NotEqual 
cStencilFunc_GreaterEqual 
cStencilFunc_Always 

◆ StencilOp

Enumerator
cStencilOp_Keep 
cStencilOp_Zero 
cStencilOp_Replace 
cStencilOp_Increment 
cStencilOp_Decrement 
cStencilOp_Invert 
cStencilOp_IncrementWrap 
cStencilOp_DecrementWrap 

◆ PolygonMode

Enumerator
cPolygonMode_Point 
cPolygonMode_Line 
cPolygonMode_Fill 

Constructor & Destructor Documentation

◆ Graphics() [1/2]

sead::Graphics::Graphics ( )

◆ ~Graphics()

sead::Graphics::~Graphics ( )
override

◆ Graphics() [2/2]

sead::Graphics::Graphics ( const Graphics & )
private

Member Function Documentation

◆ getDefaultDevicePosture()

DevicePosture sead::Graphics::getDefaultDevicePosture ( )
inlinestatic

◆ getDefaultDeviceZScale()

f32 sead::Graphics::getDefaultDeviceZScale ( )
inlinestatic

◆ getDefaultDeviceZOffset()

f32 sead::Graphics::getDefaultDeviceZOffset ( )
inlinestatic

◆ instance()

Graphics * sead::Graphics::instance ( )
inlinestatic

◆ setInstance()

void sead::Graphics::setInstance ( Graphics * impl)
inlinestatic

◆ operator=()

const Graphics & sead::Graphics::operator= ( const Graphics & )
private

◆ initializeImpl()

virtual void sead::Graphics::initializeImpl ( )
protectedvirtual

◆ setViewportImpl()

virtual void sead::Graphics::setViewportImpl ( f32 x,
f32 y,
f32 w,
f32 h )
protectedvirtual

◆ setScissorImpl()

virtual void sead::Graphics::setScissorImpl ( f32 x,
f32 y,
f32 w,
f32 h )
protectedvirtual

◆ setDepthTestEnableImpl()

virtual void sead::Graphics::setDepthTestEnableImpl ( bool enable)
protectedvirtual

◆ setDepthWriteEnableImpl()

virtual void sead::Graphics::setDepthWriteEnableImpl ( bool enable)
protectedvirtual

◆ setDepthFuncImpl()

virtual void sead::Graphics::setDepthFuncImpl ( DepthFunc func)
protectedvirtual

◆ setVBlankWaitIntervalImpl()

virtual bool sead::Graphics::setVBlankWaitIntervalImpl ( u32 interval)
protectedvirtual

◆ setCullingModeImpl()

virtual void sead::Graphics::setCullingModeImpl ( CullingMode mode)
protectedvirtual

◆ setBlendEnableImpl()

virtual void sead::Graphics::setBlendEnableImpl ( bool enable)
protectedvirtual

◆ setBlendEnableMRTImpl()

virtual void sead::Graphics::setBlendEnableMRTImpl ( u32 target,
bool enable )
protectedvirtual

◆ setBlendFactorImpl()

virtual void sead::Graphics::setBlendFactorImpl ( BlendFactor src_factor_rgb,
BlendFactor dst_factor_rgb,
BlendFactor src_factor_a,
BlendFactor dst_factor_a )
protectedvirtual

◆ setBlendFactorMRTImpl()

virtual void sead::Graphics::setBlendFactorMRTImpl ( u32 target,
BlendFactor src_factor_rgb,
BlendFactor dst_factor_rgb,
BlendFactor src_factor_a,
BlendFactor dst_factor_a )
protectedvirtual

◆ setBlendEquationImpl()

virtual void sead::Graphics::setBlendEquationImpl ( BlendEquation equation_rgb,
BlendEquation equation_a )
protectedvirtual

◆ setBlendEquationMRTImpl()

virtual void sead::Graphics::setBlendEquationMRTImpl ( u32 target,
BlendEquation equation_rgb,
BlendEquation equation_a )
protectedvirtual

◆ setBlendConstantColorImpl()

virtual void sead::Graphics::setBlendConstantColorImpl ( const Color4f & color)
protectedvirtual

◆ lockDrawContextImpl()

virtual void sead::Graphics::lockDrawContextImpl ( )
protectedvirtual

◆ unlockDrawContextImpl()

virtual void sead::Graphics::unlockDrawContextImpl ( )
protectedvirtual

◆ waitForVBlankImpl()

virtual void sead::Graphics::waitForVBlankImpl ( )
protectedvirtual

◆ setColorMaskImpl()

virtual void sead::Graphics::setColorMaskImpl ( bool r,
bool g,
bool b,
bool a )
protectedvirtual

◆ setColorMaskMRTImpl()

virtual void sead::Graphics::setColorMaskMRTImpl ( u32 target,
bool r,
bool g,
bool b,
bool a )
protectedvirtual

◆ setAlphaTestEnableImpl()

virtual void sead::Graphics::setAlphaTestEnableImpl ( bool enable)
protectedvirtual

◆ setAlphaTestFuncImpl()

virtual void sead::Graphics::setAlphaTestFuncImpl ( AlphaFunc func,
f32 ref )
protectedvirtual

◆ setStencilTestEnableImpl()

virtual void sead::Graphics::setStencilTestEnableImpl ( bool enable)
protectedvirtual

◆ setStencilTestFuncImpl()

virtual void sead::Graphics::setStencilTestFuncImpl ( StencilFunc func,
s32 ref,
u32 mask )
protectedvirtual

◆ setStencilTestOpImpl()

virtual void sead::Graphics::setStencilTestOpImpl ( StencilOp fail,
StencilOp zfail,
StencilOp zpass )
protectedvirtual

◆ setPolygonModeImpl()

virtual void sead::Graphics::setPolygonModeImpl ( PolygonMode front,
PolygonMode back )
protectedvirtual

◆ setPolygonOffsetEnableImpl()

virtual void sead::Graphics::setPolygonOffsetEnableImpl ( bool fill_front_enable,
bool fill_back_enable,
bool point_line_enable )
protectedvirtual

◆ setViewportRealPosition()

void sead::Graphics::setViewportRealPosition ( f32 x,
f32 y,
f32 w,
f32 h )
inline

◆ setScissorRealPosition()

void sead::Graphics::setScissorRealPosition ( f32 x,
f32 y,
f32 w,
f32 h )
inline

◆ setDepthEnable()

void sead::Graphics::setDepthEnable ( bool test_enable,
bool write_enable )
inline

◆ setDepthFunc()

void sead::Graphics::setDepthFunc ( Graphics::DepthFunc func)
inline

◆ setBlendEnable()

void sead::Graphics::setBlendEnable ( bool enable)
inline

◆ setBlendFactor()

void sead::Graphics::setBlendFactor ( BlendFactor src_factor,
BlendFactor dst_factor )
inline

◆ setBlendFactorSeparate()

void sead::Graphics::setBlendFactorSeparate ( BlendFactor src_factor_rgb,
BlendFactor dst_factor_rgb,
BlendFactor src_factor_a,
BlendFactor dst_factor_a )
inline

◆ setBlendFactorMRT()

void sead::Graphics::setBlendFactorMRT ( u32 target,
BlendFactor src_factor,
BlendFactor dst_factor )
inline

◆ setBlendFactorSeparateMRT()

void sead::Graphics::setBlendFactorSeparateMRT ( u32 target,
BlendFactor src_factor_rgb,
BlendFactor dst_factor_rgb,
BlendFactor src_factor_a,
BlendFactor dst_factor_a )
inline

◆ setBlendEquation()

void sead::Graphics::setBlendEquation ( BlendEquation equation)
inline

◆ setBlendEquationSeparate()

void sead::Graphics::setBlendEquationSeparate ( BlendEquation equation_rgb,
BlendEquation equation_a )
inline

◆ setBlendEquationMRT()

void sead::Graphics::setBlendEquationMRT ( u32 target,
BlendEquation equation )
inline

◆ setBlendEquationSeparateMRT()

void sead::Graphics::setBlendEquationSeparateMRT ( u32 target,
BlendEquation equation_rgb,
BlendEquation equation_a )
inline

◆ setAlphaTestEnable()

void sead::Graphics::setAlphaTestEnable ( bool enable)
inline

◆ lockDrawContext()

void sead::Graphics::lockDrawContext ( )

◆ unlockDrawContext()

void sead::Graphics::unlockDrawContext ( )

Member Data Documentation

◆ cRenderTarget_Num

const u32 sead::Graphics::cRenderTarget_Num = 8
static

◆ mContextHolderThread

Thread* sead::Graphics::mContextHolderThread
protected

◆ mContextRefCounter

s32 sead::Graphics::mContextRefCounter
protected

◆ mContextCriticalSection

CriticalSection sead::Graphics::mContextCriticalSection
protected

◆ sInstance

Graphics * sead::Graphics::sInstance = nullptr
staticprotected

◆ sDefaultDevicePosture

Graphics::DevicePosture sead::Graphics::sDefaultDevicePosture = Graphics::cDevicePosture_Same
staticprotected

◆ sDefaultDeviceZScale

f32 sead::Graphics::sDefaultDeviceZScale = 1.0f
staticprotected

◆ sDefaultDeviceZOffset

f32 sead::Graphics::sDefaultDeviceZOffset = 0.0f
staticprotected