Renderers
Evidence basis: source-verified at the pinned commit. Claims on this page were checked by reading the CNA source at commit 3b43bd86; unless a sentence says otherwise, nothing here was built or executed.
The renderer contract, identity and selection, and the families that implement it: the OpenGL profiles, SDL_GPU and WebGPU, Direct3D 9, FNA3D, the CPU rasterizer, the browser renderers and the diagnostic renderers.
Pages in this group
- Evidence tiers of the native modern GPU renderers — What SDL_GPU and WEBGPU, the two renderers that drive a modern explicit GPU API, implement at this snapshot, what evidence backs each, why a capability bit is not evidence, and the defect shapes they exposed.
- SDL_GPU shader intake, pipeline keys and draw order — Why CNA's SDL_GPU renderer uses precompiled SPIR-V in SDL_gpu's set convention, which GLSL ShaderEffect accepts, how pipelines are keyed, what state is dynamic, and how draw order and vsync are kept.
- SDL_GPU uploads, render-target lifetime and swapchain recovery — What SDL_gpu validation exposed in CNA's SDL_GPU renderer, when uploads may cycle, how render targets outlive their wrappers, what MRT writes, and how a failed swapchain acquisition keeps the frame.
- WebGPU renderer semantics: surfaces, targets, mips and pipeline state — Exact behaviour of CNA's WEBGPU renderer: non-sRGB surface policy, target-relative SpriteBatch coordinates, cube render targets, blit-free mip generation, dynamic and baked state, ordered clears and BC textures.
- The renderer contract: IGraphicsRenderer defaults, factories and failure shapes — Which IGraphicsRenderer bodies a renderer family must write, what each inherited default does to a public call, how null factories fail, and the evidence ladder behind a feature.
- Presentation modes, swap interval, native handles and back-buffer readback across renderers — What each renderer family does with the presentation mode, swap interval, formats and full-screen request, how window handles are borrowed, and exactly what GetBackBufferData returns.
- Render-target binding, clears, viewport and scissor across renderers — The shared SetRenderTargets transaction, the no-op rebind, what RenderTargetUsage selects, which clears throw, and how each renderer family applies clears, viewport and scissor.
- EasyGL: three GL profiles, one implementation, and how far evidence carries — What OPENGLES3, OPENGL33 and WEBGL2 share in EasyGL, where they differ, how far evidence carries between them, and how to choose among them.
- EasyGL state, clears, targets, queries and buffers: current semantics — What the EasyGL GL-profile renderer does at this snapshot for wireframe, occlusion counts, colour masks, clears, two-sided stencil, fog, base vertex, render targets, context-loss policy and viewports.
- Direct3D evidence: MinGW cross-builds, Wine translators and native Windows — How DIRECTX9, and SDL_GPU on SDL's Direct3D 12 driver, are built and tested off Windows: MinGW cross-builds, the DXVK and vkd3d-proton gates and their Wine prefixes, the manual Windows workflow and what each evidence tier proves.
- DIRECTX9: stock-effect bytecode, device lifecycle and oracle findings — How the XNA-fidelity renderer compiles Microsoft's stock effects, enforces GraphicsProfile from D3DCAPS9, recovers lost devices, handles targets and why its sprite projection is what it is.
- Direct3D presentation, swap interval, clears, viewport and scissor — How DIRECTX9, CNA's Direct3D 9 renderer, treats presentation modes, PresentInterval, back-buffer and depth formats, full screen, readback, viewport, scissor, clears and depth bias.
- Custom HLSL ShaderEffect on DIRECTX9 — How DIRECTX9 compiles a custom HLSL ShaderEffect, resolves uniform names through the constant table, feeds the SpriteBatch path, and why a custom effect does not reach its 3D draws.