Graphics subsystem. Manages the application window, rendering state and GPU resources. More...

#include <Urho3D/Graphics/Graphics.h>

Inheritance diagram for Urho3D::Graphics:
[legend]
Collaboration diagram for Urho3D::Graphics:
[legend]

Public Member Functions

 Graphics (Context *context)
 Construct.
 
 ~Graphics () override
 Destruct. Release the Direct3D11 device and close the window.
 
void SetExternalWindow (void *window)
 Set external window handle. Only effective before setting the initial screen mode.
 
void SetWindowTitle (const String &windowTitle)
 
void SetWindowIcon (Image *windowIcon)
 
void SetWindowPosition (const IntVector2 &position)
 
void SetWindowPosition (int x, int y)
 Set window position. Sets initial position if window is not created yet.
 
bool SetScreenMode (int width, int height, const ScreenModeParams &params, bool maximize=false)
 
bool SetScreenMode (int width, int height)
 
bool SetWindowModes (const WindowModeParams &windowMode, const WindowModeParams &secondaryWindowMode, bool maximize=false)
 
bool SetDefaultWindowModes (int width, int height, const ScreenModeParams &params)
 Set default window modes. Return true if successful.
 
bool SetMode (int width, int height, bool fullscreen, bool borderless, bool resizable, bool highDPI, bool vsync, bool tripleBuffer, int multiSample, int monitor, int refreshRate)
 Set default window modes. Deprecated. Return true if successful.
 
bool SetMode (int width, int height)
 Set screen resolution only. Deprecated. Return true if successful.
 
void SetSRGB (bool enable)
 
void SetDither (bool enable)
 
void SetFlushGPU (bool enable)
 
void SetForceGL2 (bool enable)
 Set forced use of OpenGL 2 even if OpenGL 3 is available. Must be called before setting the screen mode for the first time. Default false. No effect on Direct3D9 & 11.
 
void SetOrientations (const String &orientations)
 
bool ToggleFullscreen ()
 Toggle between full screen and windowed mode. Return true if successful.
 
void Close ()
 Close the window.
 
bool TakeScreenShot (Image &destImage)
 Take a screenshot. Return true if successful.
 
bool BeginFrame ()
 Begin frame rendering. Return true if device available and can render.
 
void EndFrame ()
 End frame rendering and swap buffers.
 
void Clear (ClearTargetFlags flags, const Color &color=Color(0.0f, 0.0f, 0.0f, 0.0f), float depth=1.0f, unsigned stencil=0)
 Clear any or all of rendertarget, depth buffer and stencil buffer. More...
 
bool ResolveToTexture (Texture2D *destination, const IntRect &viewport)
 Resolve multisampled backbuffer to a texture rendertarget. The texture's size should match the viewport size.
 
bool ResolveToTexture (Texture2D *texture)
 Resolve a multisampled texture on itself.
 
bool ResolveToTexture (TextureCube *texture)
 Resolve a multisampled cube texture on itself.
 
void Draw (PrimitiveType type, unsigned vertexStart, unsigned vertexCount)
 Draw non-indexed geometry.
 
void Draw (PrimitiveType type, unsigned indexStart, unsigned indexCount, unsigned minVertex, unsigned vertexCount)
 Draw indexed geometry.
 
void Draw (PrimitiveType type, unsigned indexStart, unsigned indexCount, unsigned baseVertexIndex, unsigned minVertex, unsigned vertexCount)
 Draw indexed geometry with vertex index offset.
 
void DrawInstanced (PrimitiveType type, unsigned indexStart, unsigned indexCount, unsigned minVertex, unsigned vertexCount, unsigned instanceCount)
 Draw indexed, instanced geometry. An instancing vertex buffer must be set.
 
void DrawInstanced (PrimitiveType type, unsigned indexStart, unsigned indexCount, unsigned baseVertexIndex, unsigned minVertex, unsigned vertexCount, unsigned instanceCount)
 Draw indexed, instanced geometry with vertex index offset.
 
void SetVertexBuffer (VertexBuffer *buffer)
 Set vertex buffer.
 
bool SetVertexBuffers (const PODVector< VertexBuffer * > &buffers, unsigned instanceOffset=0)
 
bool SetVertexBuffers (const Vector< SharedPtr< VertexBuffer > > &buffers, unsigned instanceOffset=0)
 Set multiple vertex buffers.
 
void SetIndexBuffer (IndexBuffer *buffer)
 Set index buffer.
 
void SetShaders (ShaderVariation *vs, ShaderVariation *ps)
 Set shaders.
 
void SetShaderParameter (StringHash param, const float *data, unsigned count)
 Set shader float constants.
 
void SetShaderParameter (StringHash param, float value)
 Set shader float constant.
 
void SetShaderParameter (StringHash param, int value)
 Set shader integer constant.
 
void SetShaderParameter (StringHash param, bool value)
 Set shader boolean constant.
 
void SetShaderParameter (StringHash param, const Color &color)
 Set shader color constant.
 
void SetShaderParameter (StringHash param, const Vector2 &vector)
 Set shader 2D vector constant.
 
void SetShaderParameter (StringHash param, const Matrix3 &matrix)
 Set shader 3x3 matrix constant.
 
void SetShaderParameter (StringHash param, const Vector3 &vector)
 Set shader 3D vector constant.
 
void SetShaderParameter (StringHash param, const Matrix4 &matrix)
 Set shader 4x4 matrix constant.
 
void SetShaderParameter (StringHash param, const Vector4 &vector)
 Set shader 4D vector constant.
 
void SetShaderParameter (StringHash param, const Matrix3x4 &matrix)
 Set shader 3x4 matrix constant.
 
void SetShaderParameter (StringHash param, const Variant &value)
 Set shader constant from a variant. Supported variant types: bool, float, vector2, vector3, vector4, color.
 
bool NeedParameterUpdate (ShaderParameterGroup group, const void *source)
 Check whether a shader parameter group needs update. Does not actually check whether parameters exist in the shaders.
 
bool HasShaderParameter (StringHash param)
 Check whether a shader parameter exists on the currently set shaders.
 
bool HasTextureUnit (TextureUnit unit)
 Check whether the current vertex or pixel shader uses a texture unit.
 
void ClearParameterSource (ShaderParameterGroup group)
 Clear remembered shader parameter source group.
 
void ClearParameterSources ()
 Clear remembered shader parameter sources.
 
void ClearTransformSources ()
 Clear remembered transform shader parameter sources.
 
void SetTexture (unsigned index, Texture *texture)
 Set texture.
 
void SetTextureForUpdate (Texture *texture)
 
void SetTextureParametersDirty ()
 
void SetDefaultTextureFilterMode (TextureFilterMode mode)
 Set default texture filtering mode. Called by Renderer before rendering.
 
void SetDefaultTextureAnisotropy (unsigned level)
 Set default texture anisotropy level. Called by Renderer before rendering.
 
void ResetRenderTargets ()
 Reset all rendertargets, depth-stencil surface and viewport.
 
void ResetRenderTarget (unsigned index)
 Reset specific rendertarget.
 
void ResetDepthStencil ()
 Reset depth-stencil surface.
 
void SetRenderTarget (unsigned index, RenderSurface *renderTarget)
 Set rendertarget.
 
void SetRenderTarget (unsigned index, Texture2D *texture)
 Set rendertarget.
 
void SetDepthStencil (RenderSurface *depthStencil)
 Set depth-stencil surface.
 
void SetDepthStencil (Texture2D *texture)
 Set depth-stencil surface.
 
void SetViewport (const IntRect &rect)
 Set viewport.
 
void SetBlendMode (BlendMode mode, bool alphaToCoverage=false)
 Set blending and alpha-to-coverage modes. Alpha-to-coverage is not supported on Direct3D9.
 
void SetColorWrite (bool enable)
 Set color write on/off.
 
void SetCullMode (CullMode mode)
 Set hardware culling mode.
 
void SetDepthBias (float constantBias, float slopeScaledBias)
 Set depth bias.
 
void SetDepthTest (CompareMode mode)
 Set depth compare.
 
void SetDepthWrite (bool enable)
 Set depth write on/off.
 
void SetFillMode (FillMode mode)
 Set polygon fill mode.
 
void SetLineAntiAlias (bool enable)
 Set line antialiasing on/off.
 
void SetScissorTest (bool enable, const Rect &rect=Rect::FULL, bool borderInclusive=true)
 Set scissor test.
 
void SetScissorTest (bool enable, const IntRect &rect)
 Set scissor test.
 
void SetStencilTest (bool enable, CompareMode mode=CMP_ALWAYS, StencilOp pass=OP_KEEP, StencilOp fail=OP_KEEP, StencilOp zFail=OP_KEEP, unsigned stencilRef=0, unsigned compareMask=M_MAX_UNSIGNED, unsigned writeMask=M_MAX_UNSIGNED)
 Set stencil test.
 
void SetClipPlane (bool enable, const Plane &clipPlane=Plane::UP, const Matrix3x4 &view=Matrix3x4::IDENTITY, const Matrix4 &projection=Matrix4::IDENTITY)
 Set a custom clipping plane. The plane is specified in world space, but is dependent on the view and projection matrices.
 
void BeginDumpShaders (const String &fileName)
 Begin dumping shader variation names to an XML file for precaching.
 
void EndDumpShaders ()
 End dumping shader variations names.
 
void PrecacheShaders (Deserializer &source)
 Precache shader variations from an XML file generated with BeginDumpShaders().
 
void SetShaderCacheDir (const String &path)
 
bool IsInitialized () const
 
GraphicsImplGetImpl () const
 Return graphics implementation, which holds the actual API-specific resources.
 
void * GetExternalWindow () const
 Return OS-specific external window handle. Null if not in use.
 
SDL_Window * GetWindow () const
 Return SDL window.
 
const StringGetWindowTitle () const
 
const StringGetApiName () const
 
IntVector2 GetWindowPosition () const
 
int GetWidth () const
 
int GetHeight () const
 
const ScreenModeParamsGetScreenModeParams () const
 Return screen mode parameters.
 
int GetMultiSample () const
 
IntVector2 GetSize () const
 
bool GetFullscreen () const
 
bool GetBorderless () const
 
bool GetResizable () const
 
bool GetHighDPI () const
 Return whether window is high DPI.
 
bool GetVSync () const
 
int GetRefreshRate () const
 Return refresh rate when using vsync in fullscreen.
 
int GetMonitor () const
 Return the current monitor index. Effective on in fullscreen.
 
bool GetTripleBuffer () const
 
bool GetSRGB () const
 
bool GetDither () const
 
bool GetFlushGPU () const
 
bool GetForceGL2 () const
 Return whether OpenGL 2 use is forced. Effective only on OpenGL.
 
const StringGetOrientations () const
 
bool IsDeviceLost () const
 
unsigned GetNumPrimitives () const
 
unsigned GetNumBatches () const
 
unsigned GetDummyColorFormat () const
 Return dummy color texture format for shadow maps. Is "NULL" (consume no video memory) if supported.
 
unsigned GetShadowMapFormat () const
 Return shadow map depth texture format, or 0 if not supported.
 
unsigned GetHiresShadowMapFormat () const
 Return 24-bit shadow map depth texture format, or 0 if not supported.
 
bool GetInstancingSupport () const
 
bool GetLightPrepassSupport () const
 
bool GetDeferredSupport () const
 
bool GetAnisotropySupport () const
 Return whether anisotropic texture filtering is supported.
 
bool GetHardwareShadowSupport () const
 
bool GetReadableDepthSupport () const
 
bool GetSRGBSupport () const
 
bool GetSRGBWriteSupport () const
 
PODVector< IntVector3GetResolutions (int monitor) const
 
unsigned FindBestResolutionIndex (int monitor, int width, int height, int refreshRate) const
 Return index of the best resolution for requested width, height and refresh rate.
 
PODVector< int > GetMultiSampleLevels () const
 
IntVector2 GetDesktopResolution (int monitor) const
 
int GetMonitorCount () const
 
int GetCurrentMonitor () const
 
bool GetMaximized () const
 
Vector3 GetDisplayDPI (int monitor=0) const
 
unsigned GetFormat (CompressedFormat format) const
 Return hardware format for a compressed image format, or 0 if unsupported.
 
ShaderVariationGetShader (ShaderType type, const String &name, const String &defines=String::EMPTY) const
 Return a shader variation by name and defines.
 
ShaderVariationGetShader (ShaderType type, const char *name, const char *defines) const
 Return a shader variation by name and defines.
 
VertexBufferGetVertexBuffer (unsigned index) const
 Return current vertex buffer by index.
 
IndexBufferGetIndexBuffer () const
 Return current index buffer.
 
ShaderVariationGetVertexShader () const
 Return current vertex shader.
 
ShaderVariationGetPixelShader () const
 Return current pixel shader.
 
ShaderProgramGetShaderProgram () const
 
TextureUnit GetTextureUnit (const String &name)
 Return texture unit index by name.
 
const StringGetTextureUnitName (TextureUnit unit)
 Return texture unit name by index.
 
TextureGetTexture (unsigned index) const
 Return current texture by texture unit index.
 
TextureFilterMode GetDefaultTextureFilterMode () const
 Return default texture filtering mode.
 
unsigned GetDefaultTextureAnisotropy () const
 Return default texture max. anisotropy level.
 
RenderSurfaceGetRenderTarget (unsigned index) const
 Return current rendertarget by index.
 
RenderSurfaceGetDepthStencil () const
 Return current depth-stencil surface.
 
IntRect GetViewport () const
 Return the viewport coordinates.
 
BlendMode GetBlendMode () const
 Return blending mode.
 
bool GetAlphaToCoverage () const
 Return whether alpha-to-coverage is enabled.
 
bool GetColorWrite () const
 Return whether color write is enabled.
 
CullMode GetCullMode () const
 Return hardware culling mode.
 
float GetDepthConstantBias () const
 Return depth constant bias.
 
float GetDepthSlopeScaledBias () const
 Return depth slope scaled bias.
 
CompareMode GetDepthTest () const
 Return depth compare mode.
 
bool GetDepthWrite () const
 Return whether depth write is enabled.
 
FillMode GetFillMode () const
 Return polygon fill mode.
 
bool GetLineAntiAlias () const
 Return whether line antialiasing is enabled.
 
bool GetStencilTest () const
 Return whether stencil test is enabled.
 
bool GetScissorTest () const
 Return whether scissor test is enabled.
 
const IntRectGetScissorRect () const
 Return scissor rectangle coordinates.
 
CompareMode GetStencilTestMode () const
 Return stencil compare mode.
 
StencilOp GetStencilPass () const
 Return stencil operation to do if stencil test passes.
 
StencilOp GetStencilFail () const
 Return stencil operation to do if stencil test fails.
 
StencilOp GetStencilZFail () const
 Return stencil operation to do if depth compare fails.
 
unsigned GetStencilRef () const
 Return stencil reference value.
 
unsigned GetStencilCompareMask () const
 Return stencil compare bitmask.
 
unsigned GetStencilWriteMask () const
 Return stencil write bitmask.
 
bool GetUseClipPlane () const
 Return whether a custom clipping plane is in use.
 
const StringGetShaderCacheDir () const
 
IntVector2 GetRenderTargetDimensions () const
 Return current rendertarget width and height.
 
void OnWindowResized ()
 Window was resized through user interaction. Called by Input subsystem.
 
void OnWindowMoved ()
 Window was moved through user interaction. Called by Input subsystem.
 
void Restore ()
 
void Maximize ()
 Maximize the window.
 
void Minimize ()
 Minimize the window.
 
void Raise () const
 Raises window if it was minimized.
 
void AddGPUObject (GPUObject *object)
 Add a GPU object to keep track of. Called by GPUObject.
 
void RemoveGPUObject (GPUObject *object)
 Remove a GPU object. Called by GPUObject.
 
void * ReserveScratchBuffer (unsigned size)
 Reserve a CPU-side scratch buffer.
 
void FreeScratchBuffer (void *buffer)
 Free a CPU-side scratch buffer.
 
void CleanupScratchBuffers ()
 Clean up too large scratch buffers.
 
void CleanupShaderPrograms (ShaderVariation *variation)
 Clean up shader parameters when a shader variation is released or destroyed.
 
void CleanupRenderSurface (RenderSurface *surface)
 
ConstantBufferGetOrCreateConstantBuffer (ShaderType type, unsigned index, unsigned size)
 
void MarkFBODirty ()
 
void SetVBO (unsigned object)
 
void SetUBO (unsigned object)
 
- Public Member Functions inherited from Urho3D::Object
 Object (Context *context)
 Construct.
 
 ~Object () override
 Destruct. Clean up self from event sender & receiver structures.
 
virtual StringHash GetType () const =0
 
virtual const StringGetTypeName () const =0
 
virtual const TypeInfoGetTypeInfo () const =0
 Return type info.
 
virtual void OnEvent (Object *sender, StringHash eventType, VariantMap &eventData)
 Handle event.
 
bool IsInstanceOf (StringHash type) const
 Check current instance is type of specified type.
 
bool IsInstanceOf (const TypeInfo *typeInfo) const
 Check current instance is type of specified type.
 
template<typename T >
bool IsInstanceOf () const
 Check current instance is type of specified class.
 
template<typename T >
T * Cast ()
 Cast the object to specified most derived class.
 
template<typename T >
const T * Cast () const
 Cast the object to specified most derived class.
 
void SubscribeToEvent (StringHash eventType, EventHandler *handler)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, EventHandler *handler)
 Subscribe to a specific sender's event.
 
void SubscribeToEvent (StringHash eventType, const std::function< void(StringHash, VariantMap &)> &function, void *userData=nullptr)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, const std::function< void(StringHash, VariantMap &)> &function, void *userData=nullptr)
 Subscribe to a specific sender's event.
 
void UnsubscribeFromEvent (StringHash eventType)
 Unsubscribe from an event.
 
void UnsubscribeFromEvent (Object *sender, StringHash eventType)
 Unsubscribe from a specific sender's event.
 
void UnsubscribeFromEvents (Object *sender)
 Unsubscribe from a specific sender's events.
 
void UnsubscribeFromAllEvents ()
 Unsubscribe from all events.
 
void UnsubscribeFromAllEventsExcept (const PODVector< StringHash > &exceptions, bool onlyUserData)
 Unsubscribe from all events except those listed, and optionally only those with userdata (script registered events).
 
void SendEvent (StringHash eventType)
 Send event to all subscribers.
 
void SendEvent (StringHash eventType, VariantMap &eventData)
 Send event with parameters to all subscribers.
 
VariantMapGetEventDataMap () const
 Return a preallocated map for event data. Used for optimization to avoid constant re-allocation of event data maps.
 
template<typename... Args>
void SendEvent (StringHash eventType, Args... args)
 Send event with variadic parameter pairs to all subscribers. The parameter pairs is a list of paramID and paramValue separated by comma, one pair after another.
 
ContextGetContext () const
 Return execution context.
 
const VariantGetGlobalVar (StringHash key) const
 
const VariantMapGetGlobalVars () const
 
void SetGlobalVar (StringHash key, const Variant &value)
 
ObjectGetSubsystem (StringHash type) const
 Return subsystem by type.
 
ObjectGetEventSender () const
 Return active event sender. Null outside event handling.
 
EventHandlerGetEventHandler () const
 Return active event handler. Null outside event handling.
 
bool HasSubscribedToEvent (StringHash eventType) const
 Return whether has subscribed to an event without specific sender.
 
bool HasSubscribedToEvent (Object *sender, StringHash eventType) const
 Return whether has subscribed to a specific sender's event.
 
bool HasEventHandlers () const
 Return whether has subscribed to any event.
 
template<class T >
T * GetSubsystem () const
 Template version of returning a subsystem.
 
const StringGetCategory () const
 
void SetBlockEvents (bool block)
 Block object from sending and receiving events.
 
bool GetBlockEvents () const
 Return sending and receiving events blocking status.
 
- Public Member Functions inherited from Urho3D::RefCounted
 RefCounted ()
 Construct. Allocate the reference count structure and set an initial self weak reference.
 
virtual ~RefCounted ()
 Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist.
 
 RefCounted (const RefCounted &rhs)=delete
 Prevent copy construction.
 
RefCountedoperator= (const RefCounted &rhs)=delete
 Prevent assignment.
 
void AddRef ()
 Increment reference count. Can also be called outside of a SharedPtr for traditional reference counting.
 
void ReleaseRef ()
 Decrement reference count and delete self if no more references. Can also be called outside of a SharedPtr for traditional reference counting.
 
int Refs () const
 
int WeakRefs () const
 
RefCountRefCountPtr ()
 Return pointer to the reference count structure.
 

Static Public Member Functions

static unsigned GetAlphaFormat ()
 Return the API-specific alpha texture format.
 
static unsigned GetLuminanceFormat ()
 Return the API-specific luminance texture format.
 
static unsigned GetLuminanceAlphaFormat ()
 Return the API-specific luminance alpha texture format.
 
static unsigned GetRGBFormat ()
 Return the API-specific RGB texture format.
 
static unsigned GetRGBAFormat ()
 Return the API-specific RGBA texture format.
 
static unsigned GetRGBA16Format ()
 Return the API-specific RGBA 16-bit texture format.
 
static unsigned GetRGBAFloat16Format ()
 Return the API-specific RGBA 16-bit float texture format.
 
static unsigned GetRGBAFloat32Format ()
 Return the API-specific RGBA 32-bit float texture format.
 
static unsigned GetRG16Format ()
 Return the API-specific RG 16-bit texture format.
 
static unsigned GetRGFloat16Format ()
 Return the API-specific RG 16-bit float texture format.
 
static unsigned GetRGFloat32Format ()
 Return the API-specific RG 32-bit float texture format.
 
static unsigned GetFloat16Format ()
 Return the API-specific single channel 16-bit float texture format.
 
static unsigned GetFloat32Format ()
 Return the API-specific single channel 32-bit float texture format.
 
static unsigned GetLinearDepthFormat ()
 Return the API-specific linear depth texture format.
 
static unsigned GetDepthStencilFormat ()
 Return the API-specific hardware depth-stencil texture format.
 
static unsigned GetReadableDepthFormat ()
 Return the API-specific readable hardware depth format, or 0 if not supported.
 
static unsigned GetFormat (const String &formatName)
 Return the API-specific texture format from a textual description, for example "rgb".
 
static const Vector2GetPixelUVOffset ()
 Return UV offset required for pixel perfect rendering.
 
static unsigned GetMaxBones ()
 Return maximum number of supported bones for skinning.
 
static bool GetGL3Support ()
 Return whether is using an OpenGL 3 context. Return always false on Direct3D9 & Direct3D11.
 
- Static Public Member Functions inherited from Urho3D::Object
static const TypeInfoGetTypeInfoStatic ()
 Return type info static.
 

Private Member Functions

 URHO3D_OBJECT (Graphics, Object)
 
bool OpenWindow (int width, int height, bool resizable, bool borderless)
 Create the application window.
 
void CreateWindowIcon ()
 Create the application window icon.
 
void AdjustScreenMode (int &newWidth, int &newHeight, ScreenModeParams &params, bool &maximize) const
 Adjust parameters according to the platform. Fill in missing paramters and resolve possible conflicts.
 
void OnScreenModeChanged ()
 Called when screen mode is successfully changed by the backend.
 
void AdjustWindow (int &newWidth, int &newHeight, bool &newFullscreen, bool &newBorderless, int &monitor)
 Adjust the window for new resolution and fullscreen mode.
 
bool CreateDevice (int width, int height)
 Create the Direct3D11 device and swap chain. Requires an open window. Can also be called again to recreate swap chain. Return true on success.
 
bool UpdateSwapChain (int width, int height)
 Update Direct3D11 swap chain state for a new mode and create views for the backbuffer & default depth buffer. Return true on success.
 
bool CreateInterface ()
 Create the Direct3D9 interface.
 
bool CreateDevice (unsigned adapter, unsigned deviceType)
 Create the Direct3D9 device.
 
void ResetDevice ()
 Reset the Direct3D9 device.
 
void OnDeviceLost ()
 Notify all GPU resources so they can release themselves as needed. Used only on Direct3D9.
 
void OnDeviceReset ()
 Notify all GPU resources so they can recreate themselves as needed. Used only on Direct3D9.
 
void SetStreamFrequency (unsigned index, unsigned frequency)
 Set vertex buffer stream frequency. Used only on Direct3D9.
 
void ResetStreamFrequencies ()
 Reset stream frequencies. Used only on Direct3D9.
 
void CheckFeatureSupport ()
 Check supported rendering features.
 
void ResetCachedState ()
 Reset cached rendering state.
 
void SetTextureUnitMappings ()
 Initialize texture unit mappings.
 
void PrepareDraw ()
 Process dirtied state before draw.
 
void CreateResolveTexture ()
 Create intermediate texture for multisampled backbuffer resolve. No-op if already exists.
 
void CleanupFramebuffers ()
 Clean up all framebuffers. Called when destroying the context. Used only on OpenGL.
 
unsigned CreateFramebuffer ()
 Create a framebuffer using either extension or core functionality. Used only on OpenGL.
 
void DeleteFramebuffer (unsigned fbo)
 Delete a framebuffer using either extension or core functionality. Used only on OpenGL.
 
void BindFramebuffer (unsigned fbo)
 Bind a framebuffer using either extension or core functionality. Used only on OpenGL.
 
void BindColorAttachment (unsigned index, unsigned target, unsigned object, bool isRenderBuffer)
 Bind a framebuffer color attachment using either extension or core functionality. Used only on OpenGL.
 
void BindDepthAttachment (unsigned object, bool isRenderBuffer)
 Bind a framebuffer depth attachment using either extension or core functionality. Used only on OpenGL.
 
void BindStencilAttachment (unsigned object, bool isRenderBuffer)
 Bind a framebuffer stencil attachment using either extension or core functionality. Used only on OpenGL.
 
bool CheckFramebuffer ()
 Check FBO completeness using either extension or core functionality. Used only on OpenGL.
 
void SetVertexAttribDivisor (unsigned location, unsigned divisor)
 Set vertex attrib divisor. No-op if unsupported. Used only on OpenGL.
 
void Release (bool clearGPUObjects, bool closeWindow)
 Release/clear GPU objects and optionally close the window. Used only on OpenGL.
 

Private Attributes

Mutex gpuObjectMutex_
 Mutex for accessing the GPU objects vector from several threads.
 
GraphicsImplimpl_
 Implementation.
 
SDL_Window * window_ {}
 SDL window.
 
String windowTitle_
 Window title.
 
WeakPtr< ImagewindowIcon_
 Window icon image.
 
void * externalWindow_ {}
 External window, null if not in use (default.)
 
WindowModeParams primaryWindowMode_
 
WindowModeParams secondaryWindowMode_
 Secondary window mode to be applied on Graphics::ToggleFullscreen.
 
int width_ {}
 Window width in pixels.
 
int height_ {}
 Window height in pixels.
 
IntVector2 position_
 Window position.
 
ScreenModeParams screenParams_
 Screen mode parameters.
 
bool flushGPU_ {}
 Flush GPU command buffer flag.
 
bool forceGL2_ {}
 Force OpenGL 2 flag. Only used on OpenGL.
 
bool sRGB_ {}
 sRGB conversion on write flag for the main window.
 
bool lightPrepassSupport_ {}
 Light pre-pass rendering support flag.
 
bool deferredSupport_ {}
 Deferred rendering support flag.
 
bool anisotropySupport_ {}
 Anisotropic filtering support flag.
 
bool dxtTextureSupport_ {}
 DXT format support flag.
 
bool etcTextureSupport_ {}
 ETC1 format support flag.
 
bool etc2TextureSupport_ {}
 ETC2 format support flag.
 
bool pvrtcTextureSupport_ {}
 PVRTC formats support flag.
 
bool hardwareShadowSupport_ {}
 Hardware shadow map depth compare support flag.
 
bool instancingSupport_ {}
 Instancing support flag.
 
bool sRGBSupport_ {}
 sRGB conversion on read support flag.
 
bool sRGBWriteSupport_ {}
 sRGB conversion on write support flag.
 
unsigned numPrimitives_ {}
 Number of primitives this frame.
 
unsigned numBatches_ {}
 Number of batches this frame.
 
unsigned maxScratchBufferRequest_ {}
 Largest scratch buffer request this frame.
 
PODVector< GPUObject * > gpuObjects_
 GPU objects.
 
Vector< ScratchBufferscratchBuffers_
 Scratch buffers.
 
unsigned dummyColorFormat_ {}
 Shadow map dummy color texture format.
 
unsigned shadowMapFormat_ {}
 Shadow map depth texture format.
 
unsigned hiresShadowMapFormat_ {}
 Shadow map 24-bit depth texture format.
 
VertexBuffervertexBuffers_ [MAX_VERTEX_STREAMS] {}
 Vertex buffers in use.
 
IndexBufferindexBuffer_ {}
 Index buffer in use.
 
unsigned long long vertexDeclarationHash_ {}
 Current vertex declaration hash.
 
unsigned primitiveType_ {}
 Current primitive type.
 
ShaderVariationvertexShader_ {}
 Vertex shader in use.
 
ShaderVariationpixelShader_ {}
 Pixel shader in use.
 
Texturetextures_ [MAX_TEXTURE_UNITS] {}
 Textures in use.
 
HashMap< String, TextureUnittextureUnits_
 Texture unit mappings.
 
RenderSurfacerenderTargets_ [MAX_RENDERTARGETS] {}
 Rendertargets in use.
 
RenderSurfacedepthStencil_ {}
 Depth-stencil surface in use.
 
IntRect viewport_
 Viewport coordinates.
 
TextureFilterMode defaultTextureFilterMode_ {FILTER_TRILINEAR}
 Default texture filtering mode.
 
unsigned defaultTextureAnisotropy_ {4}
 Default texture max. anisotropy level.
 
BlendMode blendMode_ {}
 Blending mode.
 
bool alphaToCoverage_ {}
 Alpha-to-coverage enable.
 
bool colorWrite_ {}
 Color write enable.
 
CullMode cullMode_ {}
 Hardware culling mode.
 
float constantDepthBias_ {}
 Depth constant bias.
 
float slopeScaledDepthBias_ {}
 Depth slope scaled bias.
 
CompareMode depthTestMode_ {}
 Depth compare mode.
 
bool depthWrite_ {}
 Depth write enable flag.
 
bool lineAntiAlias_ {}
 Line antialiasing enable flag.
 
FillMode fillMode_ {}
 Polygon fill mode.
 
bool scissorTest_ {}
 Scissor test enable flag.
 
IntRect scissorRect_
 Scissor test rectangle.
 
CompareMode stencilTestMode_ {}
 Stencil test compare mode.
 
StencilOp stencilPass_ {}
 Stencil operation on pass.
 
StencilOp stencilFail_ {}
 Stencil operation on fail.
 
StencilOp stencilZFail_ {}
 Stencil operation on depth fail.
 
unsigned stencilRef_ {}
 Stencil test reference value.
 
unsigned stencilCompareMask_ {}
 Stencil compare bitmask.
 
unsigned stencilWriteMask_ {}
 Stencil write bitmask.
 
Vector4 clipPlane_
 Current custom clip plane in post-projection space.
 
bool stencilTest_ {}
 Stencil test enable flag.
 
bool useClipPlane_ {}
 Custom clip plane enable flag.
 
const void * shaderParameterSources_ [MAX_SHADER_PARAMETER_GROUPS] {}
 Remembered shader parameter sources.
 
String shaderPath_
 Base directory for shaders.
 
String shaderCacheDir_
 Cache directory for Direct3D binary shaders.
 
String shaderExtension_
 File extension for shaders.
 
WeakPtr< ShaderlastShader_
 Last used shader in shader variation query.
 
String lastShaderName_
 Last used shader name in shader variation query.
 
SharedPtr< ShaderPrecacheshaderPrecache_
 Shader precache utility.
 
String orientations_
 Allowed screen orientations.
 
String apiName_
 Graphics API name.
 

Static Private Attributes

static const Vector2 pixelUVOffset
 Pixel perfect UV offset.
 
static bool gl3Support = false
 OpenGL3 support flag.
 

Additional Inherited Members

- Protected Attributes inherited from Urho3D::Object
Contextcontext_
 Execution context.
 

Detailed Description

Graphics subsystem. Manages the application window, rendering state and GPU resources.

Member Function Documentation

◆ CleanupRenderSurface()

void Urho3D::Graphics::CleanupRenderSurface ( RenderSurface surface)

Clean up a render surface from all FBOs. Used only on OpenGL.

Here is the call graph for this function:

◆ Clear()

void Urho3D::Graphics::Clear ( ClearTargetFlags  flags,
const Color color = Color(0.0f, 0.0f, 0.0f, 0.0f),
float  depth = 1.0f,
unsigned  stencil = 0 
)

Clear any or all of rendertarget, depth buffer and stencil buffer.

Todo:
Any user-set scissor test will be lost
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetApiName()

const String& Urho3D::Graphics::GetApiName ( ) const
inline

Return graphics API name.

◆ GetBorderless()

bool Urho3D::Graphics::GetBorderless ( ) const
inline

Return whether window is borderless.

◆ GetCurrentMonitor()

int Urho3D::Graphics::GetCurrentMonitor ( ) const

Returns the index of the display containing the center of the window on success or a negative error code on failure.

◆ GetDeferredSupport()

bool Urho3D::Graphics::GetDeferredSupport ( ) const
inline

Return whether deferred rendering is supported.

◆ GetDesktopResolution()

IntVector2 Urho3D::Graphics::GetDesktopResolution ( int  monitor) const

Return the desktop resolution.

◆ GetDisplayDPI()

Vector3 Urho3D::Graphics::GetDisplayDPI ( int  monitor = 0) const

Return display dpi information: (hdpi, vdpi, ddpi). On failure returns zero vector.

◆ GetDither()

bool Urho3D::Graphics::GetDither ( ) const

Return whether rendering output is dithered.

◆ GetFlushGPU()

bool Urho3D::Graphics::GetFlushGPU ( ) const
inline

Return whether the GPU command buffer is flushed each frame.

◆ GetFullscreen()

bool Urho3D::Graphics::GetFullscreen ( ) const
inline

Return whether window is fullscreen.

◆ GetHardwareShadowSupport()

bool Urho3D::Graphics::GetHardwareShadowSupport ( ) const
inline

Return whether shadow map depth compare is done in hardware.

◆ GetHeight()

int Urho3D::Graphics::GetHeight ( ) const
inline

Return window height in pixels.

◆ GetInstancingSupport()

bool Urho3D::Graphics::GetInstancingSupport ( ) const
inline

Return whether hardware instancing is supported.

◆ GetLightPrepassSupport()

bool Urho3D::Graphics::GetLightPrepassSupport ( ) const
inline

Return whether light pre-pass rendering is supported.

◆ GetMaximized()

bool Urho3D::Graphics::GetMaximized ( ) const

Returns true if window is maximized or runs in full screen mode.

◆ GetMonitorCount()

int Urho3D::Graphics::GetMonitorCount ( ) const

Return the number of currently connected monitors.

◆ GetMultiSample()

int Urho3D::Graphics::GetMultiSample ( ) const
inline

Return multisample mode (1 = no multisampling).

Here is the caller graph for this function:

◆ GetMultiSampleLevels()

PODVector< int > Urho3D::Graphics::GetMultiSampleLevels ( ) const

Return supported multisampling levels.

Here is the call graph for this function:

◆ GetNumBatches()

unsigned Urho3D::Graphics::GetNumBatches ( ) const
inline

Return number of batches drawn this frame.

◆ GetNumPrimitives()

unsigned Urho3D::Graphics::GetNumPrimitives ( ) const
inline

Return number of primitives drawn this frame.

◆ GetOrCreateConstantBuffer()

ConstantBuffer * Urho3D::Graphics::GetOrCreateConstantBuffer ( ShaderType  type,
unsigned  index,
unsigned  size 
)

Get or create a constant buffer. Will be shared between shaders if possible.

Here is the call graph for this function:

◆ GetOrientations()

const String& Urho3D::Graphics::GetOrientations ( ) const
inline

Return allowed screen orientations.

◆ GetReadableDepthSupport()

bool Urho3D::Graphics::GetReadableDepthSupport ( ) const
inline

Return whether a readable hardware depth format is available.

◆ GetResizable()

bool Urho3D::Graphics::GetResizable ( ) const
inline

Return whether window is resizable.

◆ GetResolutions()

PODVector< IntVector3 > Urho3D::Graphics::GetResolutions ( int  monitor) const

Return supported fullscreen resolutions (third component is refreshRate). Will be empty if listing the resolutions is not supported on the platform (e.g. Web).

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetShaderCacheDir()

const String& Urho3D::Graphics::GetShaderCacheDir ( ) const
inline

Return shader cache directory, Direct3D only.

◆ GetShaderProgram()

ShaderProgram * Urho3D::Graphics::GetShaderProgram ( ) const

Return shader program. This is an API-specific class and should not be used by applications.

◆ GetSize()

IntVector2 Urho3D::Graphics::GetSize ( ) const
inline

Return window size in pixels.

◆ GetSRGB()

bool Urho3D::Graphics::GetSRGB ( ) const
inline

Return whether the main window is using sRGB conversion on write.

◆ GetSRGBSupport()

bool Urho3D::Graphics::GetSRGBSupport ( ) const
inline

Return whether sRGB conversion on texture sampling is supported.

◆ GetSRGBWriteSupport()

bool Urho3D::Graphics::GetSRGBWriteSupport ( ) const
inline

Return whether sRGB conversion on rendertarget writing is supported.

◆ GetTripleBuffer()

bool Urho3D::Graphics::GetTripleBuffer ( ) const
inline

Return whether triple buffering is enabled.

◆ GetVSync()

bool Urho3D::Graphics::GetVSync ( ) const
inline

Return whether vertical sync is on.

◆ GetWidth()

int Urho3D::Graphics::GetWidth ( ) const
inline

Return window width in pixels.

◆ GetWindowPosition()

IntVector2 Urho3D::Graphics::GetWindowPosition ( ) const

Return window position.

◆ GetWindowTitle()

const String& Urho3D::Graphics::GetWindowTitle ( ) const
inline

Return window title.

◆ IsDeviceLost()

bool Urho3D::Graphics::IsDeviceLost ( ) const

Return whether graphics context is lost and can not render or load GPU resources.

Here is the caller graph for this function:

◆ IsInitialized()

bool Urho3D::Graphics::IsInitialized ( ) const

Return whether rendering initialized.

Here is the caller graph for this function:

◆ MarkFBODirty()

void Urho3D::Graphics::MarkFBODirty ( )

Mark the FBO needing an update. Used only on OpenGL.

◆ Restore()

void Urho3D::Graphics::Restore ( )

Restore GPU objects and reinitialize state. Requires an open window. Used only on OpenGL.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDither()

void Urho3D::Graphics::SetDither ( bool  enable)

Set whether rendering output is dithered. Default true on OpenGL. No effect on Direct3D.

◆ SetFlushGPU()

void Urho3D::Graphics::SetFlushGPU ( bool  enable)

Set whether to flush the GPU command buffer to prevent multiple frames being queued and uneven frame timesteps. Default off, may decrease performance if enabled. Not currently implemented on OpenGL.

◆ SetOrientations()

void Urho3D::Graphics::SetOrientations ( const String orientations)

Set allowed screen orientations as a space-separated list of "LandscapeLeft", "LandscapeRight", "Portrait" and "PortraitUpsideDown". Affects currently only iOS platform.

Here is the call graph for this function:

◆ SetScreenMode() [1/2]

bool Urho3D::Graphics::SetScreenMode ( int  width,
int  height 
)

Set screen resolution only. Return true if successful. Don't use SetScreenMode if ToggleFullscreen is used directly or indirectly.

Here is the call graph for this function:

◆ SetScreenMode() [2/2]

bool Urho3D::Graphics::SetScreenMode ( int  width,
int  height,
const ScreenModeParams params,
bool  maximize = false 
)

Set screen mode. Return true if successful. Don't use SetScreenMode if ToggleFullscreen is used directly or indirectly.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetShaderCacheDir()

void Urho3D::Graphics::SetShaderCacheDir ( const String path)

Set shader cache directory, Direct3D only. This can either be an absolute path or a path within the resource system.

Here is the call graph for this function:

◆ SetSRGB()

void Urho3D::Graphics::SetSRGB ( bool  enable)

Set whether the main window uses sRGB conversion on write.

◆ SetTextureForUpdate()

void Urho3D::Graphics::SetTextureForUpdate ( Texture texture)

Bind texture unit 0 for update. Called by Texture. Used only on OpenGL.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetTextureParametersDirty()

void Urho3D::Graphics::SetTextureParametersDirty ( )

Dirty texture parameters of all textures (when global settings change.)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetUBO()

void Urho3D::Graphics::SetUBO ( unsigned  object)

Bind a UBO, avoiding redundant operation. Used only on OpenGL.

◆ SetVBO()

void Urho3D::Graphics::SetVBO ( unsigned  object)

Bind a VBO, avoiding redundant operation. Used only on OpenGL.

◆ SetVertexBuffers()

bool Urho3D::Graphics::SetVertexBuffers ( const PODVector< VertexBuffer * > &  buffers,
unsigned  instanceOffset = 0 
)

Set multiple vertex buffers.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWindowIcon()

void Urho3D::Graphics::SetWindowIcon ( Image windowIcon)

Set window icon.

Here is the call graph for this function:

◆ SetWindowModes()

bool Urho3D::Graphics::SetWindowModes ( const WindowModeParams windowMode,
const WindowModeParams secondaryWindowMode,
bool  maximize = false 
)

Set window modes to be rotated by ToggleFullscreen. Apply primary window settings immeditally. Window may be maximized if requested and possible. Return true if successful.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWindowPosition()

void Urho3D::Graphics::SetWindowPosition ( const IntVector2 position)

Set window position. Sets initial position if window is not created yet.

Here is the caller graph for this function:

◆ SetWindowTitle()

void Urho3D::Graphics::SetWindowTitle ( const String windowTitle)

Set window title.

Here is the call graph for this function:

Member Data Documentation

◆ primaryWindowMode_

WindowModeParams Urho3D::Graphics::primaryWindowMode_
private

Most recently applied window mode. It may not represent actual window state if window was resized by user or Graphics::SetScreenMode was explicitly called.


The documentation for this class was generated from the following files:
  • Source/Urho3D/Graphics/Graphics.h
  • Source/Urho3D/Graphics/Graphics.cpp
  • Source/Urho3D/Graphics/OpenGL/OGLGraphics.cpp