PURE API 0.5
PR00F's Ultimate Rendering Engine full documentation
Loading...
Searching...
No Matches
PureObject3D::PureObject3DImpl Class Reference

Detailed Description

Definition at line 19 of file PureObject3DImpl.h.

#include <PureObject3DImpl.h>

Classes

struct  CurrentStats
 

Public Member Functions

virtual ~PureObject3DImpl ()
 
PureObject3DgetReferredObject () const
 
const std::set< PureObject3D * > & getReferrerObjects () const
 
TPURE_TRANSFORMED_VERTEXgetTransformedVertices (TPureBool implicitAccessSubobject=true)
 
PureVectorgetAngleVec ()
 
const PureVectorgetAngleVec () const
 
PureVector getScaledSizeVec () const
 
const PureVectorgetScaling () const
 
void SetScaling (TPureFloat value)
 
void SetScaling (const PureVector &value)
 
void Scale (TPureFloat value)
 
void Scale (const PureVector &value)
 
TPureFloat getBiggestAreaScaled () const
 
TPureFloat recalculateBiggestAreaScaled ()
 
TPureBool isRenderingAllowed () const
 
void SetRenderingAllowed (TPureBool state)
 
void Show ()
 
void Hide ()
 
TPureBool isColliding_TO_BE_REMOVED () const
 
void SetColliding_TO_BE_REMOVED (TPureBool value)
 
TPURE_ROTATION_ORDER getRotationOrder () const
 
void SetRotationOrder (TPURE_ROTATION_ORDER value)
 
TPureBool isLit () const
 
void SetLit (TPureBool value)
 
TPureBool isDoubleSided () const
 
void SetDoubleSided (TPureBool value)
 
TPureBool isWireframed () const
 
void SetWireframed (TPureBool value)
 
TPureBool isWireframedCulled () const
 
void SetWireframedCulled (TPureBool value)
 
TPureBool isAffectingZBuffer () const
 
void SetAffectingZBuffer (TPureBool value)
 
TPureBool isTestingAgainstZBuffer () const
 
void SetTestingAgainstZBuffer (TPureBool value)
 
TPureBool isStickedToScreen () const
 
void SetStickedToScreen (TPureBool value)
 
TPureBool isOccluder () const
 
void SetOccluder (TPureBool value)
 
TPureBool isOccluded () const
 
TPureBool isOcclusionTested () const
 
void SetOcclusionTested (TPureBool state)
 
const PureObject3DgetBoundingBoxObject () const
 
void ForceFinishOcclusionTest ()
 
TPureUInt getUsedSystemMemory () const
 
TPureUInt draw (const TPURE_RENDER_PASS &renderPass, TPureBool bASyncQuery, TPureBool bRenderIfQueryPending)
 

Static Public Attributes

static const TPureUInt OQ_MAX_FRAMES_WO_START_QUERY_WHEN_VISIBLE = 5
 
static const TPureUInt OQ_MAX_FRAMES_WO_START_QUERY_WHEN_OCCLUDED = 0
 
static std::vector< CurrentStatsstats
 
static std::deque< PureObject3D * > occluders
 List of 3D occluders, should be updated whenever a 3D object becomes an occluder.
 
static std::deque< PureObject3D * > occludees_opaque
 List of 3D opaque (non-blended) occludees, should be updated whenever a 3D (non-sticked) object becomes an opauqe occludee.
 
static std::deque< PureObject3D * > occludees_blended
 List of 3D transparent/blended occludees, should be updated whenever a 3D (non-sticked) object becomes a blended occludee.
 
static std::deque< PureObject3D * > occludees_2d_opaque
 List of 2D opaque (non-blended) occludees, should be updated whenever a 2D (sticked) object becomes an opauqe occludee.
 
static std::deque< PureObject3D * > occludees_2d_blended
 List of 2D transparent/blended occludees, should be updated whenever a 2D (sticked) object becomes a blended occludee.
 

Protected Member Functions

 PureObject3DImpl (PureObject3D *owner, const TPURE_VERTEX_MODIFYING_HABIT &vmod=PURE_VMOD_STATIC, const TPURE_VERTEX_REFERENCING_MODE &vref=PURE_VREF_DIRECT, TPureBool bForceUseClientMemory=false)
 
 PureObject3DImpl (const PureObject3DImpl &)
 
PureObject3DImploperator= (const PureObject3DImpl &)
 

Private Member Functions

void Draw_LoadTextureIntoTMU (const PureTexture *tex, TPureUInt iTMU=0) const
 Loads the given texture into the texture mapping unit.
 
void Draw_LoadTexturesAndSetBlendState () const
 Loads all textures into all texture mapping units and sets blending if needed.
 
void Draw_FeedbackBuffer_Start ()
 Set render mode to feedback and allocate buffer for transformed vertices.
 
void Draw_FeedbackBuffer_Finish ()
 Set render mode to default render.
 
void Draw_ApplyTransformations () const
 Applies transformations to the current modelview matrix based on the given object.
 
void Draw_PrepareGLBeforeDrawNormal (bool bLighting) const
 
void glBeginOcclusionQuery () const
 
void glEndOcclusionQuery () const
 
TPureUInt draw_RenderBoundingBox () const
 Sends the bounding box geometry to the graphics pipeline to draw it in the framebuffer.
 
TPureUInt draw_OcclusionQuery_Start (TPureBool async)
 Starts occlusion query for this object if it has a query id and query should be started.
 
TPureBool draw_OcclusionQuery_Finish (TPureBool async, TPureBool bRenderIfQueryPending)
 Checks for occlusion query result and decides if object is occluded or not.
 
TPureUInt draw_DrawSW ()
 

Private Attributes

PureObject3D_pOwner
 The owner public object who creates this pimpl object.
 
PureObject3DpRefersto
 Pointer to the original object when we are just a cloned object.
 
std::set< PureObject3D * > referrers
 Cloned objects currently referring to this object.
 
PureVector vAngle
 3D Angle.
 
PureVector vScaling
 3D Scaling.
 
TPureFloat fBiggestAreaScaled
 Biggest area of object on either plane (XY, XZ or YZ), scaled by current scaling factor.
 
TPureBool bVisible
 Visible state.
 
TPureBool bAffectedByLights
 State of lit.
 
TPureBool bDoubleSided
 Double sided.
 
TPureBool bWireframe
 Wireframe mode.
 
TPureBool bWireframedCull
 Wireframed culling.
 
TPureBool bAffectZBuffer
 Writes to Z-Buffer.
 
TPureBool bAllowZTesting
 Tests to Z-Buffer.
 
TPureBool bStickedToScreen
 Sticked to screen.
 
TPURE_ROTATION_ORDER rotation
 Rotation order.
 
TPureBool bParentInitiatedOperation
 Parent objects set this to true at the beginning of draw, subobjects ignore draw if this is not true in parent.
 
TPureBool bColliding
 Colliding state.
 
TPURE_TRANSFORMED_VERTEXpVerticesTransf
 Pointer to transformed vertices.
 
GLfloat * pFbBuffer
 Feedback buffer.
 
GLsizei nFbBuffer_h
 Size of feedback buffer.
 
TPureBool bOccluder
 Should renderer treat this as occluder in occlusion culling tests?
 
GLuint nOcclusionQuery
 OpenGL Occlusion query id.
 
PureObject3DpBoundingBox
 Box to be rendered for occlusion testing.
 
TPureBool bOccluded
 True if occlusion query resulted in it is occluded, false otherwise.
 
TPureBool bOcclusionQueryStarted
 Is nOcclusionQuery currently running?
 
PFL::timeval timeLongestWaitForSyncQueryFinish
 Sync: Maximum time we had to wait for the query to finish.
 
TPureUInt nFramesWithoutOcclusionTest
 Async: How many frames elapsed without testing if the object is occluded?
 
TPureUInt nFramesWaitedForOcclusionTestResult
 Async: Counting frames elapsed since query start until we finally had result; always reset to 0 when we have a result.
 
TPureUInt nFramesWaitedForOcclusionTestResultMin
 Async: Minimum number of frames elapsed since query start until we finally had result.
 
TPureUInt nFramesWaitedForOcclusionTestResultMax
 Async: Maximum number of frames elapsed since query start until we finally had result.
 

Friends

class PureObject3D
 
class PureObject3DManager
 

Constructor & Destructor Documentation

◆ ~PureObject3DImpl()

PureObject3D::PureObject3DImpl::~PureObject3DImpl ( )
virtual

Definition at line 78 of file PureObject3D.cpp.

◆ PureObject3DImpl() [1/2]

PureObject3D::PureObject3DImpl::PureObject3DImpl ( PureObject3D * owner,
const TPURE_VERTEX_MODIFYING_HABIT & vmod = PURE_VMOD_STATIC,
const TPURE_VERTEX_REFERENCING_MODE & vref = PURE_VREF_DIRECT,
TPureBool bForceUseClientMemory = false )
protected
Parameters
ownerThe public Object3D class instance owning this pimpl object.
vmodWhat vertex modifying habit to be set for the new Object3D instance.
vrefWhat vertex referencing mode to be set for the new Object3D instance.
bForceUseClientMemoryForce-select a vertex transfer mode storing geometry in client memory instead of server memory. Please note that this is considered only if dynamic modifying habit is specified. Specifying static modifying habit will always select a mode which places geometry data into server memory.

Definition at line 871 of file PureObject3D.cpp.

◆ PureObject3DImpl() [2/2]

PureObject3D::PureObject3DImpl::PureObject3DImpl ( const PureObject3DImpl & )
protected

Definition at line 913 of file PureObject3D.cpp.

Member Function Documentation

◆ draw()

TPureUInt PureObject3D::PureObject3DImpl::draw ( const TPURE_RENDER_PASS & renderPass,
TPureBool bASyncQuery,
TPureBool bRenderIfQueryPending )

Definition at line 761 of file PureObject3D.cpp.

◆ Draw_ApplyTransformations()

void PureObject3D::PureObject3DImpl::Draw_ApplyTransformations ( ) const
private

Applies transformations to the current modelview matrix based on the given object.

Definition at line 1038 of file PureObject3D.cpp.

◆ draw_DrawSW()

TPureUInt PureObject3D::PureObject3DImpl::draw_DrawSW ( )
private
Returns
Number of transferred vertices.

Definition at line 1491 of file PureObject3D.cpp.

◆ Draw_FeedbackBuffer_Finish()

void PureObject3D::PureObject3DImpl::Draw_FeedbackBuffer_Finish ( )
private

Set render mode to default render.

This is for debugging purposes only, for breakpoint, etc. If a breakpoint is set inside this function, the coordinates of HW-transformed vertices can be examined.

Definition at line 982 of file PureObject3D.cpp.

◆ Draw_FeedbackBuffer_Start()

void PureObject3D::PureObject3DImpl::Draw_FeedbackBuffer_Start ( )
private

Set render mode to feedback and allocate buffer for transformed vertices.

This is done only once, when the functions is called for the first time. Any consecutive call to this function has no effect, so pFbBuffer and nFbBuffer_h variables will hold the same values that have been stored during the rendereing of the 1st frame. This is for debugging purposes only, for breakpoint, etc. But in the future when HW transform and SW rasterization can be combined, this will be controlled by public API.

Definition at line 936 of file PureObject3D.cpp.

◆ Draw_LoadTextureIntoTMU()

void PureObject3D::PureObject3DImpl::Draw_LoadTextureIntoTMU ( const PureTexture * tex,
TPureUInt iTMU = 0 ) const
private

Loads the given texture into the texture mapping unit.

◆ Draw_LoadTexturesAndSetBlendState()

void PureObject3D::PureObject3DImpl::Draw_LoadTexturesAndSetBlendState ( ) const
private

Loads all textures into all texture mapping units and sets blending if needed.

◆ draw_OcclusionQuery_Finish()

TPureBool PureObject3D::PureObject3DImpl::draw_OcclusionQuery_Finish ( TPureBool bASyncQuery,
TPureBool bRenderIfQueryPending )
private

Checks for occlusion query result and decides if object is occluded or not.

Parameters
bASyncQueryIf true, it just checks if query is complete, but won't wait for it. If false, it will wait until query is finished.
bRenderIfQueryPendingIf true, and we do not have query result yet, the function will respond as if the object is NOT occluded. If false, and we do not have query result yet, the function will respond based on the last occlusion state of this object, meaning that: if the last finished query said the object was occluded, the function will respond as the object was occluded, otherwise it will respond as the object was not occluded. This parameter is used only with async queries.
Returns
True if occluded, false if not occluded or cannot conclude.

Definition at line 1386 of file PureObject3D.cpp.

◆ draw_OcclusionQuery_Start()

TPureUInt PureObject3D::PureObject3DImpl::draw_OcclusionQuery_Start ( TPureBool async)
private

Starts occlusion query for this object if it has a query id and query should be started.

If the occlusion query is actually started, a bounding box geometry will be sent to the graphics pipeline to find out if the bound geometry would be visible or not.

Parameters
asyncIf true, it might delay query start for a next frame. If false, it will start the query for sure.
Returns
Number of transferred vertices, in case of bounding box is transferred through the graphics pipeline, false otherwise.

Definition at line 1314 of file PureObject3D.cpp.

◆ Draw_PrepareGLBeforeDrawNormal()

void PureObject3D::PureObject3DImpl::Draw_PrepareGLBeforeDrawNormal ( bool bLighting) const
private

Definition at line 1099 of file PureObject3D.cpp.

◆ draw_RenderBoundingBox()

TPureUInt PureObject3D::PureObject3DImpl::draw_RenderBoundingBox ( ) const
private

Sends the bounding box geometry to the graphics pipeline to draw it in the framebuffer.

No effect if the object is not tested for occlusion.

Returns
Number of transferred vertices, which are the vertices of the bounding box.

Definition at line 1276 of file PureObject3D.cpp.

◆ ForceFinishOcclusionTest()

void PureObject3D::PureObject3DImpl::ForceFinishOcclusionTest ( )

Definition at line 715 of file PureObject3D.cpp.

◆ getAngleVec() [1/2]

PureVector & PureObject3D::PureObject3DImpl::getAngleVec ( )

Definition at line 161 of file PureObject3D.cpp.

◆ getAngleVec() [2/2]

const PureVector & PureObject3D::PureObject3DImpl::getAngleVec ( ) const

Definition at line 167 of file PureObject3D.cpp.

◆ getBiggestAreaScaled()

TPureFloat PureObject3D::PureObject3DImpl::getBiggestAreaScaled ( ) const

Definition at line 256 of file PureObject3D.cpp.

◆ getBoundingBoxObject()

const PureObject3D * PureObject3D::PureObject3DImpl::getBoundingBoxObject ( ) const

Definition at line 709 of file PureObject3D.cpp.

◆ getReferredObject()

PureObject3D * PureObject3D::PureObject3DImpl::getReferredObject ( ) const

Definition at line 140 of file PureObject3D.cpp.

◆ getReferrerObjects()

const std::set< PureObject3D * > & PureObject3D::PureObject3DImpl::getReferrerObjects ( ) const

Definition at line 146 of file PureObject3D.cpp.

◆ getRotationOrder()

TPURE_ROTATION_ORDER PureObject3D::PureObject3DImpl::getRotationOrder ( ) const

Definition at line 304 of file PureObject3D.cpp.

◆ getScaledSizeVec()

PureVector PureObject3D::PureObject3DImpl::getScaledSizeVec ( ) const

Definition at line 173 of file PureObject3D.cpp.

◆ getScaling()

const PureVector & PureObject3D::PureObject3DImpl::getScaling ( ) const

Definition at line 182 of file PureObject3D.cpp.

◆ getTransformedVertices()

TPURE_TRANSFORMED_VERTEX * PureObject3D::PureObject3DImpl::getTransformedVertices ( TPureBool implicitAccessSubobject = true)

Definition at line 152 of file PureObject3D.cpp.

◆ getUsedSystemMemory()

TPureUInt PureObject3D::PureObject3DImpl::getUsedSystemMemory ( ) const

Definition at line 750 of file PureObject3D.cpp.

◆ glBeginOcclusionQuery()

void PureObject3D::PureObject3DImpl::glBeginOcclusionQuery ( ) const
private

Definition at line 1232 of file PureObject3D.cpp.

◆ glEndOcclusionQuery()

void PureObject3D::PureObject3DImpl::glEndOcclusionQuery ( ) const
private

Definition at line 1251 of file PureObject3D.cpp.

◆ Hide()

void PureObject3D::PureObject3DImpl::Hide ( )

Definition at line 286 of file PureObject3D.cpp.

◆ isAffectingZBuffer()

TPureBool PureObject3D::PureObject3DImpl::isAffectingZBuffer ( ) const

Definition at line 402 of file PureObject3D.cpp.

◆ isColliding_TO_BE_REMOVED()

TPureBool PureObject3D::PureObject3DImpl::isColliding_TO_BE_REMOVED ( ) const

Definition at line 292 of file PureObject3D.cpp.

◆ isDoubleSided()

TPureBool PureObject3D::PureObject3DImpl::isDoubleSided ( ) const

Definition at line 340 of file PureObject3D.cpp.

◆ isLit()

TPureBool PureObject3D::PureObject3DImpl::isLit ( ) const

Definition at line 322 of file PureObject3D.cpp.

◆ isOccluded()

TPureBool PureObject3D::PureObject3DImpl::isOccluded ( ) const

Definition at line 601 of file PureObject3D.cpp.

◆ isOccluder()

TPureBool PureObject3D::PureObject3DImpl::isOccluder ( ) const

Definition at line 482 of file PureObject3D.cpp.

◆ isOcclusionTested()

TPureBool PureObject3D::PureObject3DImpl::isOcclusionTested ( ) const

Definition at line 607 of file PureObject3D.cpp.

◆ isRenderingAllowed()

TPureBool PureObject3D::PureObject3DImpl::isRenderingAllowed ( ) const

Definition at line 262 of file PureObject3D.cpp.

◆ isStickedToScreen()

TPureBool PureObject3D::PureObject3DImpl::isStickedToScreen ( ) const

Definition at line 446 of file PureObject3D.cpp.

◆ isTestingAgainstZBuffer()

TPureBool PureObject3D::PureObject3DImpl::isTestingAgainstZBuffer ( ) const

Definition at line 428 of file PureObject3D.cpp.

◆ isWireframed()

TPureBool PureObject3D::PureObject3DImpl::isWireframed ( ) const

Definition at line 358 of file PureObject3D.cpp.

◆ isWireframedCulled()

TPureBool PureObject3D::PureObject3DImpl::isWireframedCulled ( ) const

Definition at line 384 of file PureObject3D.cpp.

◆ operator=()

PureObject3D::PureObject3DImpl & PureObject3D::PureObject3DImpl::operator= ( const PureObject3DImpl & )
protected

Definition at line 919 of file PureObject3D.cpp.

◆ recalculateBiggestAreaScaled()

TPureFloat PureObject3D::PureObject3DImpl::recalculateBiggestAreaScaled ( )

Definition at line 1524 of file PureObject3D.cpp.

◆ Scale() [1/2]

void PureObject3D::PureObject3DImpl::Scale ( const PureVector & value)

Definition at line 239 of file PureObject3D.cpp.

◆ Scale() [2/2]

void PureObject3D::PureObject3DImpl::Scale ( TPureFloat value)

Definition at line 222 of file PureObject3D.cpp.

◆ SetAffectingZBuffer()

void PureObject3D::PureObject3DImpl::SetAffectingZBuffer ( TPureBool value)

Definition at line 408 of file PureObject3D.cpp.

◆ SetColliding_TO_BE_REMOVED()

void PureObject3D::PureObject3DImpl::SetColliding_TO_BE_REMOVED ( TPureBool value)

Definition at line 298 of file PureObject3D.cpp.

◆ SetDoubleSided()

void PureObject3D::PureObject3DImpl::SetDoubleSided ( TPureBool value)

Definition at line 346 of file PureObject3D.cpp.

◆ SetLit()

void PureObject3D::PureObject3DImpl::SetLit ( TPureBool value)

Definition at line 328 of file PureObject3D.cpp.

◆ SetOccluder()

void PureObject3D::PureObject3DImpl::SetOccluder ( TPureBool value)

Definition at line 488 of file PureObject3D.cpp.

◆ SetOcclusionTested()

void PureObject3D::PureObject3DImpl::SetOcclusionTested ( TPureBool state)

Definition at line 613 of file PureObject3D.cpp.

◆ SetRenderingAllowed()

void PureObject3D::PureObject3DImpl::SetRenderingAllowed ( TPureBool state)

Definition at line 268 of file PureObject3D.cpp.

◆ SetRotationOrder()

void PureObject3D::PureObject3DImpl::SetRotationOrder ( TPURE_ROTATION_ORDER value)

Definition at line 310 of file PureObject3D.cpp.

◆ SetScaling() [1/2]

void PureObject3D::PureObject3DImpl::SetScaling ( const PureVector & value)

Definition at line 205 of file PureObject3D.cpp.

◆ SetScaling() [2/2]

void PureObject3D::PureObject3DImpl::SetScaling ( TPureFloat value)

Definition at line 188 of file PureObject3D.cpp.

◆ SetStickedToScreen()

void PureObject3D::PureObject3DImpl::SetStickedToScreen ( TPureBool value)

Definition at line 452 of file PureObject3D.cpp.

◆ SetTestingAgainstZBuffer()

void PureObject3D::PureObject3DImpl::SetTestingAgainstZBuffer ( TPureBool value)

Definition at line 434 of file PureObject3D.cpp.

◆ SetWireframed()

void PureObject3D::PureObject3DImpl::SetWireframed ( TPureBool value)

Definition at line 364 of file PureObject3D.cpp.

◆ SetWireframedCulled()

void PureObject3D::PureObject3DImpl::SetWireframedCulled ( TPureBool value)

Definition at line 390 of file PureObject3D.cpp.

◆ Show()

void PureObject3D::PureObject3DImpl::Show ( )

Definition at line 280 of file PureObject3D.cpp.

Friends And Related Symbol Documentation

◆ PureObject3D

friend class PureObject3D
friend

Definition at line 176 of file PureObject3DImpl.h.

◆ PureObject3DManager

friend class PureObject3DManager
friend

Definition at line 177 of file PureObject3DImpl.h.

Member Data Documentation

◆ _pOwner

PureObject3D* PureObject3D::PureObject3DImpl::_pOwner
private

The owner public object who creates this pimpl object.

Definition at line 124 of file PureObject3DImpl.h.

◆ bAffectedByLights

TPureBool PureObject3D::PureObject3DImpl::bAffectedByLights
private

State of lit.

Definition at line 132 of file PureObject3DImpl.h.

◆ bAffectZBuffer

TPureBool PureObject3D::PureObject3DImpl::bAffectZBuffer
private

Writes to Z-Buffer.

Definition at line 136 of file PureObject3DImpl.h.

◆ bAllowZTesting

TPureBool PureObject3D::PureObject3DImpl::bAllowZTesting
private

Tests to Z-Buffer.

Definition at line 137 of file PureObject3DImpl.h.

◆ bColliding

TPureBool PureObject3D::PureObject3DImpl::bColliding
private

Colliding state.

DEPRECATED: to be removed ...

Definition at line 142 of file PureObject3DImpl.h.

◆ bDoubleSided

TPureBool PureObject3D::PureObject3DImpl::bDoubleSided
private

Double sided.

Definition at line 133 of file PureObject3DImpl.h.

◆ bOccluded

TPureBool PureObject3D::PureObject3DImpl::bOccluded
private

True if occlusion query resulted in it is occluded, false otherwise.

Default value is false.

Definition at line 153 of file PureObject3DImpl.h.

◆ bOccluder

TPureBool PureObject3D::PureObject3DImpl::bOccluder
private

Should renderer treat this as occluder in occlusion culling tests?

Definition at line 148 of file PureObject3DImpl.h.

◆ bOcclusionQueryStarted

TPureBool PureObject3D::PureObject3DImpl::bOcclusionQueryStarted
private

Is nOcclusionQuery currently running?

Definition at line 154 of file PureObject3DImpl.h.

◆ bParentInitiatedOperation

TPureBool PureObject3D::PureObject3DImpl::bParentInitiatedOperation
private

Parent objects set this to true at the beginning of draw, subobjects ignore draw if this is not true in parent.

Definition at line 140 of file PureObject3DImpl.h.

◆ bStickedToScreen

TPureBool PureObject3D::PureObject3DImpl::bStickedToScreen
private

Sticked to screen.

Definition at line 138 of file PureObject3DImpl.h.

◆ bVisible

TPureBool PureObject3D::PureObject3DImpl::bVisible
private

Visible state.

Definition at line 131 of file PureObject3DImpl.h.

◆ bWireframe

TPureBool PureObject3D::PureObject3DImpl::bWireframe
private

Wireframe mode.

Definition at line 134 of file PureObject3DImpl.h.

◆ bWireframedCull

TPureBool PureObject3D::PureObject3DImpl::bWireframedCull
private

Wireframed culling.

Definition at line 135 of file PureObject3DImpl.h.

◆ fBiggestAreaScaled

TPureFloat PureObject3D::PureObject3DImpl::fBiggestAreaScaled
private

Biggest area of object on either plane (XY, XZ or YZ), scaled by current scaling factor.

Definition at line 130 of file PureObject3DImpl.h.

◆ nFbBuffer_h

GLsizei PureObject3D::PureObject3DImpl::nFbBuffer_h
private

Size of feedback buffer.

0 for level 1. Only for level 2.

Definition at line 146 of file PureObject3DImpl.h.

◆ nFramesWaitedForOcclusionTestResult

TPureUInt PureObject3D::PureObject3DImpl::nFramesWaitedForOcclusionTestResult
private

Async: Counting frames elapsed since query start until we finally had result; always reset to 0 when we have a result.

Definition at line 157 of file PureObject3DImpl.h.

◆ nFramesWaitedForOcclusionTestResultMax

TPureUInt PureObject3D::PureObject3DImpl::nFramesWaitedForOcclusionTestResultMax
private

Async: Maximum number of frames elapsed since query start until we finally had result.

Definition at line 159 of file PureObject3DImpl.h.

◆ nFramesWaitedForOcclusionTestResultMin

TPureUInt PureObject3D::PureObject3DImpl::nFramesWaitedForOcclusionTestResultMin
private

Async: Minimum number of frames elapsed since query start until we finally had result.

Definition at line 158 of file PureObject3DImpl.h.

◆ nFramesWithoutOcclusionTest

TPureUInt PureObject3D::PureObject3DImpl::nFramesWithoutOcclusionTest
private

Async: How many frames elapsed without testing if the object is occluded?

Definition at line 156 of file PureObject3DImpl.h.

◆ nOcclusionQuery

GLuint PureObject3D::PureObject3DImpl::nOcclusionQuery
private

OpenGL Occlusion query id.

Can stay 0 if occlusion query will never be run for this object.

Definition at line 150 of file PureObject3DImpl.h.

◆ occludees_2d_blended

std::deque< PureObject3D * > PureObject3D::PureObject3DImpl::occludees_2d_blended
static

List of 2D transparent/blended occludees, should be updated whenever a 2D (sticked) object becomes a blended occludee.

Definition at line 42 of file PureObject3DImpl.h.

◆ occludees_2d_opaque

std::deque< PureObject3D * > PureObject3D::PureObject3DImpl::occludees_2d_opaque
static

List of 2D opaque (non-blended) occludees, should be updated whenever a 2D (sticked) object becomes an opauqe occludee.

Definition at line 41 of file PureObject3DImpl.h.

◆ occludees_blended

std::deque< PureObject3D * > PureObject3D::PureObject3DImpl::occludees_blended
static

List of 3D transparent/blended occludees, should be updated whenever a 3D (non-sticked) object becomes a blended occludee.

Definition at line 40 of file PureObject3DImpl.h.

◆ occludees_opaque

std::deque< PureObject3D * > PureObject3D::PureObject3DImpl::occludees_opaque
static

List of 3D opaque (non-blended) occludees, should be updated whenever a 3D (non-sticked) object becomes an opauqe occludee.

Definition at line 39 of file PureObject3DImpl.h.

◆ occluders

std::deque< PureObject3D * > PureObject3D::PureObject3DImpl::occluders
static

List of 3D occluders, should be updated whenever a 3D object becomes an occluder.

Definition at line 38 of file PureObject3DImpl.h.

◆ OQ_MAX_FRAMES_WO_START_QUERY_WHEN_OCCLUDED

TPureUInt const PureObject3D::PureObject3DImpl::OQ_MAX_FRAMES_WO_START_QUERY_WHEN_OCCLUDED = 0
static

Definition at line 34 of file PureObject3DImpl.h.

◆ OQ_MAX_FRAMES_WO_START_QUERY_WHEN_VISIBLE

TPureUInt const PureObject3D::PureObject3DImpl::OQ_MAX_FRAMES_WO_START_QUERY_WHEN_VISIBLE = 5
static

Definition at line 33 of file PureObject3DImpl.h.

◆ pBoundingBox

PureObject3D* PureObject3D::PureObject3DImpl::pBoundingBox
private

Box to be rendered for occlusion testing.

Stays NULL when nOcclusionQuery also stays 0.

Definition at line 151 of file PureObject3DImpl.h.

◆ pFbBuffer

GLfloat* PureObject3D::PureObject3DImpl::pFbBuffer
private

Feedback buffer.

NULL for level 1. Only for level 2.

Definition at line 145 of file PureObject3DImpl.h.

◆ pRefersto

PureObject3D* PureObject3D::PureObject3DImpl::pRefersto
private

Pointer to the original object when we are just a cloned object.

Definition at line 125 of file PureObject3DImpl.h.

◆ pVerticesTransf

TPURE_TRANSFORMED_VERTEX* PureObject3D::PureObject3DImpl::pVerticesTransf
private

Pointer to transformed vertices.

NULL for level 1. Only for level 2.

Definition at line 144 of file PureObject3DImpl.h.

◆ referrers

std::set<PureObject3D*> PureObject3D::PureObject3DImpl::referrers
private

Cloned objects currently referring to this object.

Definition at line 126 of file PureObject3DImpl.h.

◆ rotation

TPURE_ROTATION_ORDER PureObject3D::PureObject3DImpl::rotation
private

Rotation order.

Definition at line 139 of file PureObject3DImpl.h.

◆ stats

std::vector< PureObject3D::PureObject3DImpl::CurrentStats > PureObject3D::PureObject3DImpl::stats
static

Definition at line 36 of file PureObject3DImpl.h.

◆ timeLongestWaitForSyncQueryFinish

PFL::timeval PureObject3D::PureObject3DImpl::timeLongestWaitForSyncQueryFinish
private

Sync: Maximum time we had to wait for the query to finish.

Definition at line 155 of file PureObject3DImpl.h.

◆ vAngle

PureVector PureObject3D::PureObject3DImpl::vAngle
private

3D Angle.

Definition at line 128 of file PureObject3DImpl.h.

◆ vScaling

PureVector PureObject3D::PureObject3DImpl::vScaling
private

3D Scaling.

Definition at line 129 of file PureObject3DImpl.h.


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