| #include "offscreen_render_target.hpp" | |
| #ifndef _WIN32 | |
| namespace rive_tests | |
| { | |
| rive::rcp<OffscreenRenderTarget> OffscreenRenderTarget::MakeD3D( | |
| rive::gpu::RenderContextD3DImpl*, | |
| uint32_t width, | |
| uint32_t height, | |
| bool riveRenderable) | |
| { | |
| return nullptr; | |
| } | |
| } // namespace rive_tests | |
| #else | |
| #include <rive/renderer/d3d11/render_context_d3d_impl.hpp> | |
| #include <rive/renderer/rive_render_image.hpp> | |
| namespace rive_tests | |
| { | |
| class OffscreenRenderTargetD3D : public OffscreenRenderTarget | |
| { | |
| public: | |
| OffscreenRenderTargetD3D(rive::gpu::RenderContextD3DImpl* renderContextImpl, | |
| uint32_t width, | |
| uint32_t height, | |
| bool riveRenderable) : | |
| m_renderTarget( | |
| rive::make_rcp<rive::gpu::RenderTargetD3D>(renderContextImpl, | |
| width, | |
| height)) | |
| { | |
| auto texture = renderContextImpl->makeSimple2DTexture( | |
| DXGI_FORMAT_R8G8B8A8_UNORM, | |
| width, | |
| height, | |
| 1, | |
| riveRenderable | |
| ? (D3D11_BIND_UNORDERED_ACCESS | D3D11_BIND_RENDER_TARGET | | |
| D3D11_BIND_SHADER_RESOURCE) | |
| : D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE); | |
| m_renderTarget->setTargetTexture(texture); | |
| m_renderImage = rive::make_rcp<rive::RiveRenderImage>( | |
| renderContextImpl->adoptImageTexture(texture, width, height)); | |
| }; | |
| rive::RenderImage* asRenderImage() override { return m_renderImage.get(); } | |
| rive::gpu::RenderTarget* asRenderTarget() override | |
| { | |
| return m_renderTarget.get(); | |
| } | |
| private: | |
| rive::rcp<rive::gpu::RenderTargetD3D> m_renderTarget; | |
| rive::rcp<rive::RiveRenderImage> m_renderImage; | |
| }; | |
| rive::rcp<OffscreenRenderTarget> OffscreenRenderTarget::MakeD3D( | |
| rive::gpu::RenderContextD3DImpl* impl, | |
| uint32_t width, | |
| uint32_t height, | |
| bool riveRenderable) | |
| { | |
| return rive::make_rcp<OffscreenRenderTargetD3D>(impl, | |
| width, | |
| height, | |
| riveRenderable); | |
| } | |
| } // namespace rive_tests | |
| #endif |