#pragma once #include "pch.h" #include "EffectDesc.h" class EffectDrawer { public: EffectDrawer() = default; EffectDrawer(const EffectDrawer&) = delete; EffectDrawer(EffectDrawer&&) = delete; bool Initialize( const EffectDesc& desc, const EffectParams& params, ID3D11Texture2D* inputTex, ID3D11Texture2D** outputTex, RECT* outputRect = nullptr, RECT* virtualOutputRect = nullptr ); void Draw(); private: EffectDesc _desc; std::vector _samplers; std::vector> _textures; std::vector> _srvs; // 后半部分为空,用于解绑 std::vector> _uavs; std::vector _constants; winrt::com_ptr _constantBuffer; std::vector> _shaders; std::vector> _dispatches; bool _isLastEffect = false; };