Initial commit
This commit is contained in:
114
Include/ZRenderer/ZRenderTarget.hpp
Normal file
114
Include/ZRenderer/ZRenderTarget.hpp
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
ZRenderTarget.hpp
|
||||
Author: James Russell <jcrussell@762studios.com>
|
||||
Created: 03/20/2011
|
||||
|
||||
Purpose:
|
||||
|
||||
Defines an interface for a rendering surface.
|
||||
|
||||
License:
|
||||
|
||||
TODO
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef _ZRENDERTARGET_HPP
|
||||
#define _ZRENDERTARGET_HPP
|
||||
|
||||
#include <ZRenderer/ZRendererBuild.hpp>
|
||||
#include <ZRenderer/ZRendererResource.hpp>
|
||||
|
||||
//Enumeration of possible render target types
|
||||
enum ZRenderTargetType
|
||||
{
|
||||
ZRTT_WINDOW, //Used for window render targets
|
||||
ZRTT_FRAMEBUFFER, //Used for frame buffer render targets
|
||||
ZRTT_SIZE
|
||||
};
|
||||
|
||||
//Used to flag which buffers should be cleared, and to what value
|
||||
struct ZRenderTargetClearFlags
|
||||
{
|
||||
bool AutoClear; //Indicates that the renderer should 'clear' the toggled buffers before rendering to this target
|
||||
|
||||
bool ClearColorBuffer; //Indicates we should clear the color buffer
|
||||
bool ClearDepthBuffer; //Indicates we should clear the depth buffer
|
||||
bool ClearStencilBuffer; //Indicates we should clear the stencil buffer
|
||||
|
||||
float ClearColor[4]; //RGBA clear color to use
|
||||
|
||||
//Default Constructor
|
||||
ZRenderTargetClearFlags()
|
||||
: AutoClear(true), ClearColorBuffer(true), ClearDepthBuffer(true), ClearStencilBuffer(false)
|
||||
{
|
||||
ClearColor[0] = 0.0f;
|
||||
ClearColor[1] = 0.0f;
|
||||
ClearColor[2] = 0.0f;
|
||||
ClearColor[3] = 1.0f;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
RenderTarget Interface.
|
||||
*/
|
||||
class ZRenderTarget : public ZRendererResource
|
||||
{
|
||||
public:
|
||||
//Virtual Destructor
|
||||
virtual ~ZRenderTarget() { }
|
||||
|
||||
/*
|
||||
public ZRenderTarget::GetClearFlags
|
||||
|
||||
Gets the current set of clear flags for this render target.
|
||||
|
||||
@return (const ZRenderTargetClearFlags&) - clearing flags for this render target
|
||||
@context (all)
|
||||
*/
|
||||
virtual const ZRenderTargetClearFlags& GetClearFlags() = 0;
|
||||
|
||||
/*
|
||||
public ZRenderTarget::GetHeight
|
||||
|
||||
Gets the height value for the render target (in pixels).
|
||||
|
||||
@return (size_t)
|
||||
@context (all)
|
||||
*/
|
||||
virtual size_t GetHeight() = 0;
|
||||
|
||||
/*
|
||||
public ZRenderTarget::GetType
|
||||
|
||||
Gets the type of render target.
|
||||
|
||||
@return (ZRenderTargetType) - the type of render target
|
||||
@context (all)
|
||||
*/
|
||||
virtual ZRenderTargetType GetType() = 0;
|
||||
|
||||
/*
|
||||
public ZRenderTarget::GetWidth
|
||||
|
||||
Gets the width value for the render target (in pixels).
|
||||
|
||||
@return (size_t)
|
||||
@context (all)
|
||||
*/
|
||||
virtual size_t GetWidth() = 0;
|
||||
|
||||
/*
|
||||
public ZRenderTarget::SetClearFlags
|
||||
|
||||
Sets the clear flags for this render target.
|
||||
|
||||
@param _flags - flags structure which has our clear settings
|
||||
@return (bool) - true if able to set flags, false if resource contended
|
||||
@context (all)
|
||||
*/
|
||||
virtual bool SetClearFlags(const ZRenderTargetClearFlags& _flags) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user