载入中...
搜索中...
未找到
RenderTrace.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4
5#include <string>
6
7namespace eve::debug {
8
15public:
17 virtual ~IRenderTracer() = default;
19 virtual void frameBegin() {}
21 virtual void frameEnd() {}
23 virtual void passBegin(const char* name) {}
25 virtual void passEnd(const char* name) {}
27 virtual void target(const char* name) {} // screen / canvas
29 virtual void bind(const char* kind, const char* name) {}
31 virtual void draw(const char* api, const char* detail) {}
33 virtual void error(const char* message) {}
34};
35
37EVENGINE_API_FOUNDATION void setRenderTracer(IRenderTracer* tracer);
40
42inline void rtFrameBegin() {
43 if (IRenderTracer* t = renderTracer()) t->frameBegin();
44}
46inline void rtFrameEnd() {
47 if (IRenderTracer* t = renderTracer()) t->frameEnd();
48}
50inline void rtPassBegin(const char* name) {
51 if (IRenderTracer* t = renderTracer()) t->passBegin(name);
52}
54inline void rtPassEnd(const char* name) {
55 if (IRenderTracer* t = renderTracer()) t->passEnd(name);
56}
58inline void rtTarget(const char* name) {
59 if (IRenderTracer* t = renderTracer()) t->target(name);
60}
62inline void rtBind(const char* kind, const char* name) {
63 if (IRenderTracer* t = renderTracer()) t->bind(kind, name);
64}
66inline void rtDraw(const char* api, const char* detail = nullptr) {
67 if (IRenderTracer* t = renderTracer()) t->draw(api, detail ? detail : "");
68}
70inline void rtError(const char* message) {
71 if (IRenderTracer* t = renderTracer()) t->error(message ? message : "");
72}
73
76public:
78 explicit RenderPassScope(const char* name) : name_(name ? name : "") {
80 rtPassBegin(name_.c_str());
81 }
83 ~RenderPassScope() { rtPassEnd(name_.c_str()); }
86
87private:
88 std::string name_;
89};
90
91} // namespace eve::debug
#define EVENGINE_API_FOUNDATION_INLINE
仅供"只有内联成员"的类型使用的组宏:拥有者 dllexport,消费方不导入。
Definition Export.h:170
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::string message
TokenKind kind
std::string name
int detail
float t
Optional render-pipeline tracer. Graphics / RenderSystem call the rt* helpers; when no tracer is inst...
Definition RenderTrace.h:14
virtual void error(const char *message)
Error.
Definition RenderTrace.h:33
virtual void bind(const char *kind, const char *name)
Binds .
Definition RenderTrace.h:29
virtual void passBegin(const char *name)
Pass begin.
Definition RenderTrace.h:23
virtual void frameBegin()
Frame begin.
Definition RenderTrace.h:19
virtual void draw(const char *api, const char *detail)
Draws .
Definition RenderTrace.h:31
virtual ~IRenderTracer()=default
I render tracer.
virtual void passEnd(const char *name)
Pass end.
Definition RenderTrace.h:25
virtual void target(const char *name)
Target.
Definition RenderTrace.h:27
virtual void frameEnd()
Frame end.
Definition RenderTrace.h:21
RAII pass scope for C++ call sites.
Definition RenderTrace.h:75
~RenderPassScope()
Releases RenderPassScope resources.
Definition RenderTrace.h:83
RenderPassScope(const RenderPassScope &)=delete
RenderPassScope(const char *name)
Constructs a RenderPassScope.
Definition RenderTrace.h:78
RenderPassScope & operator=(const RenderPassScope &)=delete
void rtBind(const char *kind, const char *name)
Rt bind.
Definition RenderTrace.h:62
void rtTarget(const char *name)
Rt target.
Definition RenderTrace.h:58
void setRenderTracer(IRenderTracer *tracer)
Sets the render tracer.
void rtPassBegin(const char *name)
Rt pass begin.
Definition RenderTrace.h:50
void rtFrameBegin()
Rt frame begin.
Definition RenderTrace.h:42
void rtFrameEnd()
Rt frame end.
Definition RenderTrace.h:46
void rtError(const char *message)
Rt error.
Definition RenderTrace.h:70
void rtDraw(const char *api, const char *detail=nullptr)
Rt draw.
Definition RenderTrace.h:66
IRenderTracer * renderTracer()
Renders tracer.
void rtPassEnd(const char *name)
Rt pass end.
Definition RenderTrace.h:54