Definition at line 19 of file PureObject3DImpl.h.
#include <PureObject3DImpl.h>
◆ ~PureObject3DImpl()
PureObject3D::PureObject3DImpl::~PureObject3DImpl |
( |
| ) |
|
|
virtual |
◆ PureObject3DImpl() [1/2]
- Parameters
-
owner | The public Object3D class instance owning this pimpl object. |
vmod | What vertex modifying habit to be set for the new Object3D instance. |
vref | What vertex referencing mode to be set for the new Object3D instance. |
bForceUseClientMemory | Force-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]
◆ draw()
◆ 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 |
◆ 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()
Checks for occlusion query result and decides if object is occluded or not.
- Parameters
-
bASyncQuery | If true, it just checks if query is complete, but won't wait for it. If false, it will wait until query is finished. |
bRenderIfQueryPending | If 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()
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
-
async | If 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 |
◆ 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 |
( |
| ) |
|
◆ getAngleVec() [1/2]
PureVector & PureObject3D::PureObject3DImpl::getAngleVec |
( |
| ) |
|
◆ getAngleVec() [2/2]
const PureVector & PureObject3D::PureObject3DImpl::getAngleVec |
( |
| ) |
const |
◆ getBiggestAreaScaled()
TPureFloat PureObject3D::PureObject3DImpl::getBiggestAreaScaled |
( |
| ) |
const |
◆ getBoundingBoxObject()
const PureObject3D * PureObject3D::PureObject3DImpl::getBoundingBoxObject |
( |
| ) |
const |
◆ getReferredObject()
PureObject3D * PureObject3D::PureObject3DImpl::getReferredObject |
( |
| ) |
const |
◆ getReferrerObjects()
const std::set< PureObject3D * > & PureObject3D::PureObject3DImpl::getReferrerObjects |
( |
| ) |
const |
◆ getRotationOrder()
◆ getScaledSizeVec()
PureVector PureObject3D::PureObject3DImpl::getScaledSizeVec |
( |
| ) |
const |
◆ getScaling()
const PureVector & PureObject3D::PureObject3DImpl::getScaling |
( |
| ) |
const |
◆ getTransformedVertices()
◆ getUsedSystemMemory()
TPureUInt PureObject3D::PureObject3DImpl::getUsedSystemMemory |
( |
| ) |
const |
◆ glBeginOcclusionQuery()
void PureObject3D::PureObject3DImpl::glBeginOcclusionQuery |
( |
| ) |
const |
|
private |
◆ glEndOcclusionQuery()
void PureObject3D::PureObject3DImpl::glEndOcclusionQuery |
( |
| ) |
const |
|
private |
◆ Hide()
void PureObject3D::PureObject3DImpl::Hide |
( |
| ) |
|
◆ isAffectingZBuffer()
TPureBool PureObject3D::PureObject3DImpl::isAffectingZBuffer |
( |
| ) |
const |
◆ isColliding_TO_BE_REMOVED()
TPureBool PureObject3D::PureObject3DImpl::isColliding_TO_BE_REMOVED |
( |
| ) |
const |
◆ isDoubleSided()
TPureBool PureObject3D::PureObject3DImpl::isDoubleSided |
( |
| ) |
const |
◆ isLit()
TPureBool PureObject3D::PureObject3DImpl::isLit |
( |
| ) |
const |
◆ isOccluded()
TPureBool PureObject3D::PureObject3DImpl::isOccluded |
( |
| ) |
const |
◆ isOccluder()
TPureBool PureObject3D::PureObject3DImpl::isOccluder |
( |
| ) |
const |
◆ isOcclusionTested()
TPureBool PureObject3D::PureObject3DImpl::isOcclusionTested |
( |
| ) |
const |
◆ isRenderingAllowed()
TPureBool PureObject3D::PureObject3DImpl::isRenderingAllowed |
( |
| ) |
const |
◆ isStickedToScreen()
TPureBool PureObject3D::PureObject3DImpl::isStickedToScreen |
( |
| ) |
const |
◆ isTestingAgainstZBuffer()
TPureBool PureObject3D::PureObject3DImpl::isTestingAgainstZBuffer |
( |
| ) |
const |
◆ isWireframed()
TPureBool PureObject3D::PureObject3DImpl::isWireframed |
( |
| ) |
const |
◆ isWireframedCulled()
TPureBool PureObject3D::PureObject3DImpl::isWireframedCulled |
( |
| ) |
const |
◆ operator=()
◆ recalculateBiggestAreaScaled()
TPureFloat PureObject3D::PureObject3DImpl::recalculateBiggestAreaScaled |
( |
| ) |
|
◆ Scale() [1/2]
void PureObject3D::PureObject3DImpl::Scale |
( |
const PureVector & | value | ) |
|
◆ Scale() [2/2]
void PureObject3D::PureObject3DImpl::Scale |
( |
TPureFloat | value | ) |
|
◆ SetAffectingZBuffer()
void PureObject3D::PureObject3DImpl::SetAffectingZBuffer |
( |
TPureBool | value | ) |
|
◆ SetColliding_TO_BE_REMOVED()
void PureObject3D::PureObject3DImpl::SetColliding_TO_BE_REMOVED |
( |
TPureBool | value | ) |
|
◆ SetDoubleSided()
void PureObject3D::PureObject3DImpl::SetDoubleSided |
( |
TPureBool | value | ) |
|
◆ SetLit()
void PureObject3D::PureObject3DImpl::SetLit |
( |
TPureBool | value | ) |
|
◆ SetOccluder()
void PureObject3D::PureObject3DImpl::SetOccluder |
( |
TPureBool | value | ) |
|
◆ SetOcclusionTested()
void PureObject3D::PureObject3DImpl::SetOcclusionTested |
( |
TPureBool | state | ) |
|
◆ SetRenderingAllowed()
void PureObject3D::PureObject3DImpl::SetRenderingAllowed |
( |
TPureBool | state | ) |
|
◆ SetRotationOrder()
◆ SetScaling() [1/2]
void PureObject3D::PureObject3DImpl::SetScaling |
( |
const PureVector & | value | ) |
|
◆ SetScaling() [2/2]
void PureObject3D::PureObject3DImpl::SetScaling |
( |
TPureFloat | value | ) |
|
◆ SetStickedToScreen()
void PureObject3D::PureObject3DImpl::SetStickedToScreen |
( |
TPureBool | value | ) |
|
◆ SetTestingAgainstZBuffer()
void PureObject3D::PureObject3DImpl::SetTestingAgainstZBuffer |
( |
TPureBool | value | ) |
|
◆ SetWireframed()
void PureObject3D::PureObject3DImpl::SetWireframed |
( |
TPureBool | value | ) |
|
◆ SetWireframedCulled()
void PureObject3D::PureObject3DImpl::SetWireframedCulled |
( |
TPureBool | value | ) |
|
◆ Show()
void PureObject3D::PureObject3DImpl::Show |
( |
| ) |
|
◆ PureObject3D
◆ PureObject3DManager
◆ _pOwner
The owner public object who creates this pimpl object.
Definition at line 124 of file PureObject3DImpl.h.
◆ bAffectedByLights
TPureBool PureObject3D::PureObject3DImpl::bAffectedByLights |
|
private |
◆ bAffectZBuffer
TPureBool PureObject3D::PureObject3DImpl::bAffectZBuffer |
|
private |
◆ bAllowZTesting
TPureBool PureObject3D::PureObject3DImpl::bAllowZTesting |
|
private |
◆ bColliding
TPureBool PureObject3D::PureObject3DImpl::bColliding |
|
private |
◆ bDoubleSided
TPureBool PureObject3D::PureObject3DImpl::bDoubleSided |
|
private |
◆ 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 |
◆ 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 |
◆ bVisible
TPureBool PureObject3D::PureObject3DImpl::bVisible |
|
private |
◆ bWireframe
TPureBool PureObject3D::PureObject3DImpl::bWireframe |
|
private |
◆ bWireframedCull
TPureBool PureObject3D::PureObject3DImpl::bWireframedCull |
|
private |
◆ 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 |
◆ OQ_MAX_FRAMES_WO_START_QUERY_WHEN_VISIBLE
TPureUInt const PureObject3D::PureObject3DImpl::OQ_MAX_FRAMES_WO_START_QUERY_WHEN_VISIBLE = 5 |
|
static |
◆ pBoundingBox
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 |
◆ pRefersto
Pointer to the original object when we are just a cloned object.
Definition at line 125 of file PureObject3DImpl.h.
◆ pVerticesTransf
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 |
◆ rotation
◆ stats
◆ 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
◆ vScaling
PureVector PureObject3D::PureObject3DImpl::vScaling |
|
private |
The documentation for this class was generated from the following files:
- C:/__PR00F__/___developing___/projects/PGE/PGE/PURE/include/internal/Object3D/PureObject3DImpl.h
- C:/__PR00F__/___developing___/projects/PGE/PGE/PURE/source/Object3D/PureObject3D.cpp