OROCHI
 
Loading...
Searching...
No Matches
GxRenderQuery.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12GX_CORE_NAMESPACE_BEGIN()
13
14//===========================================================================
17//===========================================================================
19{
20 //-------------------------------------------------------------
22 //-------------------------------------------------------------
24public:
25 // Rtti定義
26 GX_RTTI_ABSTRACT_CLASS(GxRenderQuery, GxClassBaseReference)
27 // GxClassBaseReference継承クラス用禁止宣言
29 // new, delete定義
30 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::RENDER)
31
32 friend class GxRenderDevice;
33
35 //-------------------------------------------------------------
37 //-------------------------------------------------------------
39public:
41 void cleanup(void) override;
42
43protected:
46
48 GxRenderQuery(void);
49
51 //-------------------------------------------------------------
53 //-------------------------------------------------------------
55public:
57 GX_FORCE_INLINE void onLostDevice(void) override {}
58
60 GX_FORCE_INLINE b32 onResetDevice(void) override { return true; }
61
63 void issueBegin(u32 queryIndex = 0);
65 void issueEnd(u32 queryIndex = 0, b32 flush = false);
67 b32 getDataSync(void* pData, u32 size);
69 b32 getDataAsync(void* pData, u32 size);
70#if GX_ENABLE_OCCLUSION_CULLING
72 constexpr u32 addQuery(void) { return _queryCount++; }
74 void resolveOcclusionQuery(void);
76 void mapOcclusionResult(void);
78 b32 isOcclusion(u32 queryIndex) const;
79#if GX_DEVELOP
81 void setOcclusion(u32 queryIndex, b32 flag) const;
82#endif // GX_DEVELOP
83#endif //GX_ENABLE_OCCLUSION_CULLING
84
85#if GX_DEVELOP
87 GX_FORCE_INLINE GxString getRenderNotifierName(void) const override { GxString string; return string.format("ClassName:%s", getRtti().getClassName()); }
88#endif // GX_DEVELOP
89
90private:
91#if GX_USE_DX12
93 D3D12_QUERY_HEAP_TYPE getQueryHeapType(void) const;
95 D3D12_QUERY_TYPE getQueryType(void) const;
96#endif //GX_USE_DX12
97
99 //-------------------------------------------------------------
101 //-------------------------------------------------------------
103protected:
104 RENDER_QUERY_TYPE _type;
106#if GX_ENABLE_OCCLUSION_CULLING
107 GxNativeQueryResult _pQueryResult;
108#endif //GX_ENABLE_OCCLUSION_CULLING
109#if GX_USE_DX11
110 ID3D11Query* _pD3D11Query;
111#elif GX_USE_DX12
112 ComPtr<ID3D12QueryHeap> _pQueryHeap;
113 u64* _pOcclusionResult;
114#endif // GX_USE_DX12
115
117};
118
119GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
RENDER_QUERY_TYPE
クエリタイプ
Definition GxRender.h:1228
@ RENDER
レンダリング
参照オブジェクト基底クラス
Definition GxBase.h:122
virtual GxRtti & getRtti(void) const =0
Rttiの取得
描画関連の依存をこのクラスで吸収します
Definition GxRenderDevice.h:450
b32 initialize(const GxRenderDeviceInitialInformation *pInitialInformation)
初期化関数
Definition GxRenderDevice.cpp:1017
描画関連のイベントを通知します
Definition GxRenderNotifier.h:22
GPUクエリを管理する
Definition GxRenderQuery.h:19
GX_FORCE_INLINE void onLostDevice(void) override
デバイスが消失した時点で通知
Definition GxRenderQuery.h:57
GX_FORCE_INLINE b32 onResetDevice(void) override
デバイスのリセット後に通知
Definition GxRenderQuery.h:60
u32 _queryCount
クエリの種類
Definition GxRenderQuery.h:105
文字列型クラス
Definition GxString.h:18
const GxString & format(GX_CSTR format,...)
フォーマット出力
Definition GxString.cpp:1913
32bitブーリアン
Definition GxDefine.h:173