载入中...
搜索中...
未找到
EditorMaterialOffscreen.cpp
浏览该文件的文档.
2
3namespace eve::editor {
4
8 if (!previews_ || !draw_) {
9 result.status = EditorStatus::Rejected;
11 DiagnosticCode::PreconditionViolation, RuleId("editor.material.offscreen-renderer"),
12 DiagnosticSeverity::Error,
13 "Material offscreen preview requires service and draw callback"));
14 return result;
15 }
17 offscreen.previewId = request.sceneId;
18 offscreen.sourceRevision = request.documentRevision;
19 offscreen.width = request.settings.width;
20 offscreen.height = request.settings.height;
21 auto rendered = previews_->render(offscreen, [&](graphics::Graphics* graphics, graphics::Canvas* canvas) {
22 return draw_(request, graphics, canvas);
23 });
24 result.status = rendered.code();
25 result.diagnostics = rendered.diagnostics();
26 if (rendered.ok()) result.artifact = rendered.value().handle;
27 return result;
28}
29
30} // namespace eve::editor
const GltfImportRequest & request
MaterialPreviewRenderResult render(const MaterialPreviewRenderRequest &request) override
Renders .
Canvas public API.
Definition Canvas.h:17
Result< OffscreenPreviewArtifact > render(const OffscreenPreviewRequest &request, const DrawCallback &draw, int maximumDimension=4096, std::uint64_t maximumPixels=16777216)
Clear, draw and read back one isolated offscreen Canvas.
Diagnostic ruleDiagnostic(eve::DiagnosticCode code, RuleId rule, DiagnosticSeverity severity, std::string message)
Build a common diagnostic carrying an open editing rule identity.
eve::editing::RuleId RuleId
Definition EditorIds.h:32
Immutable request passed to a renderer-owned isolated preview scene.
Renderer output referenced by a stable artifact rather than GPU pointers.
std::vector< EditorDiagnostic > diagnostics
Immutable request for one isolated Canvas render and CPU readback.