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]
|
delete |
◆ PrimitiveScene() [3/3]
|
delete |
成员函数说明
◆ add()
| eve::Result< PrimitiveHandle > eve::graphics::PrimitiveScene::add | ( | PrimitiveDescriptor3D | descriptor | ) |
◆ clear()
| void eve::graphics::PrimitiveScene::clear | ( | ) |
Invalidates all live handles while retaining slot capacity.
在文件 PrimitiveScene.cpp 第 218 行定义.
引用了 index , 以及 eve::graphics::PrimitiveHandle::nextGeneration().
◆ isStale()
|
noexcept |
Returns true when a handle is invalid, removed, foreign, or generation-stale.
在文件 PrimitiveScene.cpp 第 216 行定义.
引用了 handle.
◆ operator=() [1/2]
|
delete |
◆ operator=() [2/2]
|
delete |
◆ remove()
| eve::Result< PrimitiveRemoveStatus > eve::graphics::PrimitiveScene::remove | ( | PrimitiveHandle | handle | ) |
◆ render()
| void eve::graphics::PrimitiveScene::render | ( | PrimitiveSceneCanvas3D & | canvas | ) | const |
Compatibility-only wrapper over tryRender; throws on budget failure.
- 参数
-
canvas Borrowed for this synchronous call; retains owning command copies. @thread Owner-thread affine. @reentrancy Does not invoke callbacks.
在文件 PrimitiveScene.cpp 第 236 行定义.
引用了 tryRender().
◆ size()
|
inlinenoexcept |
Returns the size of .
在文件 PrimitiveScene.h 第 220 行定义.
◆ tryGet()
|
noexcept |
Resolves a live primitive handle.
- 参数
-
handle Generation-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 行定义.
◆ 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.
- 参数
-
canvas Borrowed 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 | ||
| ) |
Updates .
在文件 PrimitiveScene.cpp 第 160 行定义.
引用了 descriptor, eve::Diagnostic::error(), eve::Result< T >::failure(), handle, eve::StaleHandle, eve::Result< T >::success() , 以及 eve::graphics::Updated.
被这些函数引用 updateMany().
◆ 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().
该类的文档由以下文件生成:
- src/modules/graphics/PrimitiveScene.h
- src/modules/graphics/PrimitiveScene.cpp