/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/GameEngine/DearImgui/DearImguiRenderer.h
85 строк
3 KB
Sanakan8472
Simple console actions and generalized ImGui resources (#1969)
25 июн 2026, 09:22
Не верифицирован
25 июн 2026, 09:22
cbb1175
Код
Авторство
О чём код?
#pragma once #ifdef BUILDSYSTEM_ENABLE_IMGUI_SUPPORT # include <Core/ResourceManager/ResourceHandle.h> # include <Foundation/Math/Rect.h> # include <GameEngine/DearImgui/DearImgui.h> # include <GameEngine/GameEngineDLL.h> # include <Imgui/imgui.h> # include <RendererCore/Meshes/MeshBufferResource.h> # include <RendererCore/Pipeline/Extractor.h> # include <RendererCore/Pipeline/RenderData.h> # include <RendererCore/Pipeline/Renderer.h> # include <RendererFoundation/Resources/BufferPool.h> class ezRenderDataBatch; using ezShaderResourceHandle = ezTypedResourceHandle<class ezShaderResource>; struct ezImguiVertex { EZ_DECLARE_POD_TYPE(); ezVec3 m_Position; ezVec2 m_TexCoord; ezColorLinearUB m_Color; }; struct ezImguiBatch { EZ_DECLARE_POD_TYPE(); ezRectU32 m_ScissorRect; ImTextureID m_TextureId; ezUInt16 m_uiVertexCount; }; class EZ_GAMEENGINE_DLL ezImguiRenderData : public ezRenderData { EZ_ADD_DYNAMIC_REFLECTION(ezImguiRenderData, ezRenderData); public: ezArrayPtr<ezImguiVertex> m_Vertices; ezArrayPtr<ImDrawIdx> m_Indices; ezArrayPtr<ezImguiBatch> m_Batches; }; class EZ_GAMEENGINE_DLL ezImguiExtractor : public ezExtractor { EZ_ADD_DYNAMIC_REFLECTION(ezImguiExtractor, ezExtractor); public: ezImguiExtractor(const char* szName = "ImguiExtractor"); virtual void Extract(const ezView& view, const ezDynamicArray<const ezGameObject*>& visibleObjects, ezExtractedRenderData& ref_extractedRenderData) override; virtual void PostSortAndBatch(const ezView& view, const ezDynamicArray<const ezGameObject*>& visibleObjects, ezExtractedRenderData& ref_extractedRenderData) override {} virtual ezResult Serialize(ezStreamWriter& inout_stream) const override; virtual ezResult Deserialize(ezStreamReader& inout_stream) override; }; class EZ_GAMEENGINE_DLL ezImguiRenderer : public ezRenderer { EZ_ADD_DYNAMIC_REFLECTION(ezImguiRenderer, ezRenderer); EZ_DISALLOW_COPY_AND_ASSIGN(ezImguiRenderer); public: ezImguiRenderer(); ~ezImguiRenderer(); virtual void GetSupportedRenderDataTypes(ezDynamicArray<const ezRTTI*>& out_types) const override; virtual void RenderBatch(const ezRenderViewContext& renderContext, const ezRenderPipelinePass* pPass, const ezRenderDataBatch& batch) const override; protected: void SetupRenderer(); static constexpr ezUInt32 s_uiVertexBufferSize = 1024 * 128; static constexpr ezUInt32 s_uiIndexBufferSize = s_uiVertexBufferSize * 2; ezShaderResourceHandle m_hShader; ezGALBufferPool m_VertexBuffer; ezGALBufferPool m_IndexBuffer; ezSmallArray<ezGALVertexAttribute, 3> m_VertexAttributes; }; #endif