All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Luminous::RenderResource Class Reference

This class provides common interface for different resources needed during rendering. More...

#include <Luminous/RenderResource.hpp>

Inheritance diagram for Luminous::RenderResource:
Luminous::Buffer Luminous::FrameBuffer Luminous::Program Luminous::RenderBuffer Luminous::Texture Luminous::VertexArray

Classes

struct  Hash
 Hash used to identify rendering resources. More...
 

Public Types

typedef uint64_t Id
 Id of a resource.
 
enum  Type {
  VertexArray, Buffer, Program, Texture,
  RenderBuffer, FrameBuffer
}
 Different types of render resources. More...
 

Public Member Functions

unsigned int expiration () const
 Returns resource expiration time. More...
 
int generation () const
 Returns generation of this resource. More...
 
void invalidate ()
 Invalidates correspondent GPU objects and forces uploading of data to GPU.
 
RenderResourceoperator= (RenderResource &&rr)
 Move assignment operator. More...
 
 RenderResource (Type type)
 Constructor of RenderResource. More...
 
 RenderResource (RenderResource &&rr)
 Move constructor. More...
 
Id resourceId () const
 Returns identifier of resource. More...
 
Type resourceType () const
 Returns type of the resource. More...
 
void setExpiration (unsigned int seconds)
 Set resource expiration time. More...
 
void setGeneration (int generation)
 Sets generation for this resource. More...
 
virtual ~RenderResource ()
 Destructor of RenderResource.
 

Protected Member Functions

RenderResourceoperator= (const RenderResource &rr)
 Assignment operator. More...
 
 RenderResource (const RenderResource &rr)
 Copy constructor. More...
 

Detailed Description

This class provides common interface for different resources needed during rendering.

Member Enumeration Documentation

Different types of render resources.

Enumerator
VertexArray 

Vertex array.

See Also
VertexArray
Buffer 

Buffer for vertex or index data.

See Also
Buffer
Program 

Shader program consisting of multiple independent shaders.

See Also
Shader
Texture 

Texture.

See Also
Texture
RenderBuffer 

Render buffer.

See Also
RenderBuffer
FrameBuffer 

Frame buffer.

See Also
FrameBuffer

Constructor & Destructor Documentation

Luminous::RenderResource::RenderResource ( Type  type)

Constructor of RenderResource.

Parameters
typeType of the resource
Luminous::RenderResource::RenderResource ( RenderResource &&  rr)

Move constructor.

Parameters
rrResource to move
Luminous::RenderResource::RenderResource ( const RenderResource rr)
protected

Copy constructor.

Parameters
rrresource to copy

Member Function Documentation

unsigned int Luminous::RenderResource::expiration ( ) const
inline

Returns resource expiration time.

Returns
How many seconds after usage we store this object
int Luminous::RenderResource::generation ( ) const
inline

Returns generation of this resource.

If resource and its corresponding GPU class have a different generation data is updated on GPU.

Returns
Generation of this object
RenderResource& Luminous::RenderResource::operator= ( RenderResource &&  rr)

Move assignment operator.

Parameters
rrRenderResource to move
Returns
Reference to this
RenderResource& Luminous::RenderResource::operator= ( const RenderResource rr)
protected

Assignment operator.

Parameters
rrresource to copy
Returns
reference to this
Id Luminous::RenderResource::resourceId ( ) const
inline

Returns identifier of resource.

It is guaranteed that each RenderResource has unique id regardless of its type.

Returns
Identifier of this resource
Type Luminous::RenderResource::resourceType ( ) const
inline

Returns type of the resource.

Returns
Resource type
void Luminous::RenderResource::setExpiration ( unsigned int  seconds)
inline

Set resource expiration time.

The resource will be released after it has not been used for this period

Parameters
secondsHow many seconds after usage we store this object
void Luminous::RenderResource::setGeneration ( int  generation)
inline

Sets generation for this resource.

Parameters
generationNew generation