Skip to content

PoC D3D11 Renderer#2371

Merged
andrewfb merged 8 commits intocinder:masterfrom
andrewfb:renderer-d3d11
Oct 13, 2025
Merged

PoC D3D11 Renderer#2371
andrewfb merged 8 commits intocinder:masterfrom
andrewfb:renderer-d3d11

Conversation

@andrewfb
Copy link
Collaborator

@andrewfb andrewfb commented Oct 9, 2025

This is a basic implementation of a Renderer based on Direct3D11. It's only meant to serve as a proof-of-concept, and to ensure we're keeping the Cinder architecture "honest" inasmuch as we're not precluding renderers other than OpenGL.

This includes two samples, one is a "Hello Triangle" example D3dTriangle, and the other is a simplified ImageFileBasic called D3d11ImageBasic. The latter uses CanvasUi for interaction.

I'll submit a PR to remove UWP support in the near future, and part of my motivation in writing this is to make sure we're not losing any of the power of the Renderer abstraction.

image

Implements basic D3D11.1 rendering backend with device management, DXGI 1.2 flip model swap chains, and clear/present operations.
Basic D3D11 sample demonstrating colored triangle rendering with runtime HLSL shader compilation.
Image viewer with CanvasUi pan/zoom integration, file drop support, and file dialog for loading images.
Include D3d11Triangle and D3d11ImageBasic in the batch build solution.
@chaoticbob
Copy link
Contributor

Did you purposely avoided using ComPtr (or something like it) for COM object management?

@andrewfb
Copy link
Collaborator Author

Did you purposely avoided using ComPtr (or something like it) for COM object management?

Fair question - this is really just meant to be a smoke test implementation but I've taken the opportunity to substantially improve msw::ComPtr<> and write some unit tests for it. I'm emulating wrl::ComPtr for the most part, but avoiding bringing WRL into a dependency.

CaptureImplDirectShow was the only real consumer of msw::ComPtr<> before and I had to update it some for these updated semantics.

@andrewfb andrewfb merged commit b80b8ee into cinder:master Oct 13, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants