The book is designed for selective reading. Chapters state their own evidence boundaries, while
Appendix G defines the shared vocabulary. The routes below avoid
repeating material and identify a useful first destination for common readers.
New CNA user
Read Chapters 1, 4, and
5. Continue with the game lifecycle (Chapter 6),
SpriteBatch (Chapter 13), and content resolution
(Chapter 33). Chapter 20 explains renderer
choice; Chapter 79 lists material gaps at the edition pin.
XNA or FNA porter
Start with the compatibility boundary in Chapters 1
and 3, then use the migration workflow in
Chapter 74. Consult Chapters 33–
36 for assets, Chapter 17 for effects and custom
shaders, and Appendix E when strict XNA compatibility matters.
Renderer implementer
Read Chapters 12, 19,
20, and 18. Appendix B
summarizes the family-level contract; Chapters 71
and 70 explain engagement and oracle requirements.
Runtime renderer user
Read Chapters 4, 20, and
19. The selection chapter separates compiled families, configured
default, runtime preference, fallback and the first-device latch; Appendix B
supplies the family inventory and platform gates.
Native C consumer
Begin with Appendix I, then use Chapters 4
and 9 for build and link topology. Read Chapter 73
before interpreting the C API workflow and release-gate inventory as executed evidence.
Framework contributor
Begin with the lifecycle and module boundaries in Chapters 6,
9, and 10. Chapters 68
and 72 cover test registration and mechanical policy gates.
Content or glTF contributor
Read Chapters 33–37, then
Chapters 39–43. Appendix H
keeps importer, runtime, renderer, and oracle evidence in separate columns.
Verification contributor
Read Parts XI and Appendix G first.
Chapter 69 defines reproducible counts; Chapter 70
distinguishes authority and tolerance; Chapter 73 records what automation
did and did not exercise at the pin.
The shortest practical route
For a first program, the minimum sequence is: select a renderer when configuring CNA, build CNA
as the repository documents, derive a class from Game, let
GraphicsDeviceManager create the graphics device, load assets through
ContentManager, and draw through an XNA-shaped API such as SpriteBatch.
Chapter 5 contains the complete small program and commands. Portable code stays
within the Microsoft::Xna::Framework surface and treats CNAEXT-marked APIs as
explicit extensions.
When a result differs by renderer, first identify the public selector, implementation family,
native or translation API, and whether the intended route engaged. Then reduce the case to a
state transition, readback, or pixel oracle. A successful process exit alone cannot localize a
renderer-specific failure.