载入中...
搜索中...
未找到
eve::graphics::PrimitiveScene类 参考

Authoritative owner for primitives that persist across frames. 更多...

#include <PrimitiveScene.h>

Public 成员函数

 PrimitiveScene ()
 Primitive scene.
 
 PrimitiveScene (const PrimitiveScene &)=delete
 
PrimitiveScene & operator= (const PrimitiveScene &)=delete
 
 PrimitiveScene (PrimitiveScene &&)=delete
 
PrimitiveScene & operator= (PrimitiveScene &&)=delete
 
eve::Result< PrimitiveHandle > add (PrimitiveDescriptor3D descriptor)
 Adds .
 
eve::Result< PrimitiveUpdateStatus > update (PrimitiveHandle handle, PrimitiveDescriptor3D descriptor)
 Updates .
 
eve::Result< PrimitiveRemoveStatus > remove (PrimitiveHandle handle)
 Removes .
 
eve::Result< std::size_t > updateMany (std::span< const PrimitiveBatchUpdate > updates)
 Atomically replaces several live descriptors after validating every handle.
 
const PrimitiveDescriptor3D * tryGet (PrimitiveHandle handle) const noexcept
 Resolves a live primitive handle.
 
bool isStale (PrimitiveHandle handle) const noexcept
 Returns true when a handle is invalid, removed, foreign, or generation-stale.
 
void clear ()
 Invalidates all live handles while retaining slot capacity.
 
eve::Result< void > tryRender (PrimitiveSceneCanvas3D &canvas) const
 Projects visible descriptors in stable slot order using per-slot CPU caches. Successful updates invalidate the affected cache; removal/clear release it. Camera changes reuse geometry, but clipping and screen-space stroke resolution remain frame-local. No GPU allocation is retained by this cache. A primitive exceeding the remaining command budget returns a failure without publishing that primitive; earlier primitives remain recorded. droppedCommands reports the rejected primitive's commands. Allocation failure throws before publishing that primitive; already recorded primitives remain valid.
 
void render (PrimitiveSceneCanvas3D &canvas) const
 Compatibility-only wrapper over tryRender; throws on budget failure.
 
std::size_t size () const noexcept
 Returns the size of .
 

详细描述

Authoritative owner for primitives that persist across frames.

All operations, including render(), are owner-thread affine and invoke no callbacks. Descriptors are authoritative; cached CPU commands are disposable derived data. @ownership Owns descriptors and caches; borrows the destination Canvas only during rendering. @lifetime Cached data lives until successful replacement, removal, clear, or scene destruction. Rendering synchronously copies commands into a caller-owned Canvas without retaining it.

在文件 PrimitiveScene.h 第 167 行定义.

构造及析构函数说明

◆ PrimitiveScene() [1/3]

eve::graphics::PrimitiveScene::PrimitiveScene ( )

Primitive scene.

在文件 PrimitiveScene.cpp 第 134 行定义.

◆ PrimitiveScene() [2/3]

eve::graphics::PrimitiveScene::PrimitiveScene ( const PrimitiveScene &  )
delete

◆ PrimitiveScene() [3/3]

eve::graphics::PrimitiveScene::PrimitiveScene ( PrimitiveScene &&  )
delete

成员函数说明

◆ add()

◆ clear()

void eve::graphics::PrimitiveScene::clear ( )

Invalidates all live handles while retaining slot capacity.

在文件 PrimitiveScene.cpp 第 218 行定义.

引用了 index , 以及 eve::graphics::PrimitiveHandle::nextGeneration().

◆ isStale()

bool eve::graphics::PrimitiveScene::isStale ( PrimitiveHandle  handle) const
noexcept

Returns true when a handle is invalid, removed, foreign, or generation-stale.

在文件 PrimitiveScene.cpp 第 216 行定义.

引用了 handle.

◆ operator=() [1/2]

PrimitiveScene & eve::graphics::PrimitiveScene::operator= ( const PrimitiveScene &  )
delete

◆ operator=() [2/2]

PrimitiveScene & eve::graphics::PrimitiveScene::operator= ( PrimitiveScene &&  )
delete

◆ remove()

◆ render()

void eve::graphics::PrimitiveScene::render ( PrimitiveSceneCanvas3D &  canvas) const

Compatibility-only wrapper over tryRender; throws on budget failure.

参数
canvasBorrowed for this synchronous call; retains owning command copies. @thread Owner-thread affine. @reentrancy Does not invoke callbacks.

在文件 PrimitiveScene.cpp 第 236 行定义.

引用了 tryRender().

◆ size()

std::size_t eve::graphics::PrimitiveScene::size ( ) const
inlinenoexcept

Returns the size of .

在文件 PrimitiveScene.h 第 220 行定义.

◆ tryGet()

const PrimitiveDescriptor3D * eve::graphics::PrimitiveScene::tryGet ( PrimitiveHandle  handle) const
noexcept

Resolves a live primitive handle.

参数
handleGeneration-qualified handle issued by this scene.
返回
Borrowed descriptor or nullptr when the handle is invalid or stale. @ownership Borrowed; PrimitiveScene retains ownership. @lifetime Valid until the next non-const PrimitiveScene operation or scene destruction. @thread Owner-thread affine; concurrent mutation is not supported. @reentrancy Does not invoke callbacks.

在文件 PrimitiveScene.cpp 第 211 行定义.

引用了 handle , 以及 eve::graphics::PrimitiveHandle::index().

◆ tryRender()

eve::Result< void > eve::graphics::PrimitiveScene::tryRender ( PrimitiveSceneCanvas3D &  canvas) const

Projects visible descriptors in stable slot order using per-slot CPU caches. Successful updates invalidate the affected cache; removal/clear release it. Camera changes reuse geometry, but clipping and screen-space stroke resolution remain frame-local. No GPU allocation is retained by this cache. A primitive exceeding the remaining command budget returns a failure without publishing that primitive; earlier primitives remain recorded. droppedCommands reports the rejected primitive's commands. Allocation failure throws before publishing that primitive; already recorded primitives remain valid.

参数
canvasBorrowed for this call only; receives independent owning commands.
返回
Success, or Failed when the next primitive exceeds the remaining budget. @thread Owner-thread affine, including concurrent const calls. @reentrancy Does not invoke callbacks.

在文件 PrimitiveScene.cpp 第 241 行定义.

引用了 eve::graphics::PrimitiveDrawStatistics::cacheHits, eve::graphics::PrimitiveDrawStatistics::commandCount, eve::graphics::PrimitiveSceneCanvas3D::concat(), count, descriptor, eve::graphics::PrimitiveSceneCanvas3D::drawAabb(), eve::graphics::PrimitiveSceneCanvas3D::drawArc(), eve::graphics::PrimitiveSceneCanvas3D::drawArrow(), eve::graphics::PrimitiveSceneCanvas3D::drawCapsule(), eve::graphics::PrimitiveSceneCanvas3D::drawCone(), eve::graphics::PrimitiveSceneCanvas3D::drawCylinder(), eve::graphics::PrimitiveSceneCanvas3D::drawDisk(), eve::graphics::PrimitiveSceneCanvas3D::drawFrustum(), eve::graphics::PrimitiveSceneCanvas3D::drawGrid(), eve::graphics::PrimitiveSceneCanvas3D::drawObb(), eve::graphics::PrimitiveSceneCanvas3D::drawPolyline(), eve::graphics::PrimitiveSceneCanvas3D::drawSphere(), eve::graphics::PrimitiveDrawStatistics::droppedCommands, eve::Diagnostic::error(), eve::Failed, eve::Result< T >::failure(), hit, lines, eve::graphics::PrimitiveDrawStatistics::segmentCount, eve::Result< T >::success(), eve::graphics::PrimitiveDrawStatistics::triangleCount, triangles , 以及 u.

被这些函数引用 render().

◆ update()

eve::Result< PrimitiveUpdateStatus > eve::graphics::PrimitiveScene::update ( PrimitiveHandle  handle,
PrimitiveDescriptor3D  descriptor 
)

◆ updateMany()

eve::Result< std::size_t > eve::graphics::PrimitiveScene::updateMany ( std::span< const PrimitiveBatchUpdate >  updates)

Atomically replaces several live descriptors after validating every handle.

在文件 PrimitiveScene.cpp 第 191 行定义.

引用了 eve::Diagnostic::error(), eve::Result< T >::failure(), eve::StaleHandle, eve::Result< T >::success() , 以及 update().


该类的文档由以下文件生成: