Gem Illuminator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
LightRayRenderer Class Reference

The LightRayRenderer packs LightRays and paints them. More...

#include <lightrayrenderer.h>

Inheritance diagram for LightRayRenderer:

Public Member Functions

 LightRayRenderer (QObject *parent=0)
 
virtual ~LightRayRenderer ()
 
void addLightRay (const LightRay &lightRay)
 Adds a new LightRay that will be rendered. Dynamic LightRays are added without checking whether they exist or not. Static LightRays will be only added if the LightRay is not already drawn by LightRayRenderer. More...
 
virtual void paint (QOpenGLFunctions &gl, const QMatrix4x4 &viewProjection, QOpenGLShaderProgram &shaderProgram)
 Paints all LightRays. More...
 
void resetDynamicRays ()
 Removes all dynamic rays. It is suggested to do so every frame. More...
 

Protected Member Functions

void calculateVertexDataFor (const LightRayData &rayData, QVector< float > &vertices, QVector< unsigned int > &indices)
 Calculates vertex data out of start and end position of a ray. More...
 
void updateDynamicVBO ()
 
void updateStaticVBO ()
 
void updateRayVBO (QOpenGLBuffer *&vertexBuffer, QOpenGLBuffer *&indexBuffer, const QSet< LightRayData > &data)
 

Protected Attributes

QOpenGLBuffer * m_dynamicIndexBuffer
 
QSet< LightRayData > * m_dynamicRays
 
QOpenGLBuffer * m_dynamicVertexBuffer
 
bool m_isStaticVBOUpdateRequired
 
QOpenGLBuffer * m_staticIndexBuffer
 
QSet< LightRayData > * m_staticRays
 
QOpenGLBuffer * m_staticVertexBuffer
 

Detailed Description

The LightRayRenderer packs LightRays and paints them.

Constructor & Destructor Documentation

LightRayRenderer::LightRayRenderer ( QObject *  parent = 0)
explicit
LightRayRenderer::~LightRayRenderer ( )
virtual

Member Function Documentation

void LightRayRenderer::addLightRay ( const LightRay lightRay)

Adds a new LightRay that will be rendered. Dynamic LightRays are added without checking whether they exist or not. Static LightRays will be only added if the LightRay is not already drawn by LightRayRenderer.

Parameters
lightRayThe LightRay that is added
void LightRayRenderer::calculateVertexDataFor ( const LightRayData rayData,
QVector< float > &  vertices,
QVector< unsigned int > &  indices 
)
protected

Calculates vertex data out of start and end position of a ray.

Parameters
rayDataThe ray that should be drawn and requires vertex data
verticesA vector the vertex data will be appended
indicesA vector the index data will be appended
void LightRayRenderer::paint ( QOpenGLFunctions &  gl,
const QMatrix4x4 &  viewProjection,
QOpenGLShaderProgram &  shaderProgram 
)
virtual

Paints all LightRays.

Parameters
glQOPenGLFunctions which are used for gl-calls
viewProjectionThe viewprojection matrix for drawing the rays.
shaderProgramThe shader program that will be used to draw rays.
void LightRayRenderer::resetDynamicRays ( )

Removes all dynamic rays. It is suggested to do so every frame.

void LightRayRenderer::updateDynamicVBO ( )
protected
void LightRayRenderer::updateRayVBO ( QOpenGLBuffer *&  vertexBuffer,
QOpenGLBuffer *&  indexBuffer,
const QSet< LightRayData > &  data 
)
protected
void LightRayRenderer::updateStaticVBO ( )
protected

Member Data Documentation

QOpenGLBuffer* LightRayRenderer::m_dynamicIndexBuffer
protected
QSet<LightRayData>* LightRayRenderer::m_dynamicRays
protected
QOpenGLBuffer* LightRayRenderer::m_dynamicVertexBuffer
protected
bool LightRayRenderer::m_isStaticVBOUpdateRequired
protected
QOpenGLBuffer* LightRayRenderer::m_staticIndexBuffer
protected
QSet<LightRayData>* LightRayRenderer::m_staticRays
protected
QOpenGLBuffer* LightRayRenderer::m_staticVertexBuffer
protected

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