Real-Time Graphics Programming
Real-time graphics programming turns scene data into displayable images fast enough for interaction. It coordinates CPU work, GPU resources, shaders, visibility, rasterization, and presentation under a fixed time budget for each frame.
itSoftware engineering | OpenSkills.info
Recommended first:game-engine-fundamentals
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Intro
Real-Time Graphics Programming
Real-time graphics programming produces a new image while an application is running, usually in response to input, animation, simulation, or camera movement. Unlike offline rendering, it must finish each frame before the next display deadline. A target of 60 frames per second allows about 16.67 milliseconds per frame; 120 frames per second allows about 8.33 milliseconds.
The application and graphics processor share the work. The CPU updates the world, determines visible objects, prepares resource bindings, and records rendering commands. A graphics API submits those commands to one or more GPU queues. The GPU consumes buffers and textures, runs shader programs across many data items, writes render targets, and presents the completed image through a swap chain.
From scene to screen
A frame begins with scene state: transforms, cameras, lights, geometry, materials, and animation results. The renderer derives a view of that state rather than drawing the scene graph directly. It culls work that cannot affect the camera, sorts the remaining work when ordering matters, and groups draws that share pipeline state.
Geometry reaches the GPU through vertex and index buffers. A vertex shader transforms each vertex from model space through world and view space into clip space. Clipping removes portions outside the viewing volume. Perspective division produces normalized device coordinates, and viewport mapping converts them to window coordinates.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://wikis.khronos.org/opengl/Rendering_Pipeline_Overview
Supports
- Pipeline order, programmable stages, primitive assembly, rasterization, fragment processing, and per-sample operations
- https://registry.khronos.org/OpenGL/specs/gl/glspec46.core.pdf
Supports
- Coordinate processing, pipeline state, resources, rasterization, depth, stencil, blending, synchronization, and limits
- https://docs.vulkan.org/spec/latest/chapters/fundamentals.html
Supports
- Explicit objects, command buffers, queues, memory, devices, and host versus device execution
- https://docs.vulkan.org/spec/latest/chapters/synchronization.html
Supports
- Barriers, semaphores, fences, execution dependencies, and memory dependencies
- https://docs.vulkan.org/tutorial/latest/03_Drawing_a_triangle/03_Drawing/03_Frames_in_flight.html
Supports
- Multiple frames in flight, per-frame resources, completion fences, throughput, and latency tradeoffs
- https://gpuweb.github.io/gpuweb/
Supports
- Adapters, devices, buffers, textures, pipelines, command encoding, render passes, validation, and presentation
- https://learn.microsoft.com/en-us/windows/win32/direct3d12/direct3d-12-graphics
Supports
- Direct3D graphics, command lists, resources, descriptors, pipelines, and synchronization
- https://developer.apple.com/documentation/metal
Supports
- Metal command, resource, shader, rendering, and performance model
- https://developer.nvidia.com/nsight-graphics
Supports
- Frame debugging, GPU trace, shader and pipeline inspection, and performance analysis
- https://github.com/KhronosGroup/SPIRV-Tools
Supports
- spirv-val, spirv-dis, spirv-as, and spirv-opt command purposes
- https://github.com/KhronosGroup/glslang
Supports
- glslangValidator Vulkan SPIR-V generation and debug options
- https://vulkan.lunarg.com/doc/view/latest/windows/validation_layers.html
Supports
- Khronos validation layer activation and development use
- https://developer.mozilla.org/en-US/docs/Games/Techniques/Efficient_animation_for_web_games
Supports
- Frame rate and per-frame timing relationship
- https://registry.khronos.org/OpenGL/extensions/EXT/EXT_texture_sRGB.txt
Supports
- Linear and sRGB texture and framebuffer conversion behavior
- https://github.com/sindresorhus/awesome
Supports
- Discovery of the Awesome OpenGL and Awesome Vulkan lists
- https://github.com/eug/awesome-opengl
Supports
- RenderDoc, apitrace, GLFW, GLM, Tracy, and Shadertoy ecosystem discovery
- https://renderdoc.org/docs/index.html
Supports
- Frame capture, event inspection, pipeline state, and texture inspection rationale
- https://apitrace.github.io/
Supports
- API tracing, replay, state inspection, and image comparison rationale
- https://www.glfw.org/docs/latest/
Supports
- Window, context, surface, input, and event handling rationale
- https://glm.g-truc.net/0.9.9/index.html
Supports
- GLSL-style C++ types and transform functions rationale
- https://github.com/wolfpld/tracy
Supports
- CPU zones, frame markers, GPU contexts, and profiler rationale
- https://www.shadertoy.com/howto
Supports
- Live fragment-shader experimentation rationale
- https://www.khronos.org/opengl/wiki/Version
Supports
- OpenGL 1.0 in 1992, GLSL in OpenGL 2.0 in 2004, compute shaders in 4.3, and SPIR-V in 4.6
- https://news.microsoft.com/source/1999/02/03/microsoft-ships-directx-6-1/
Supports
- DirectX introduction in 1995
- https://download.nvidia.com/developer/cg/Cg_Tutorial/Chapter_1.pdf
Supports
- Hardware transform and lighting in 1999 to 2000 and programmable vertex processing in 2001
- https://www.khronos.org/opengles/
Supports
- OpenGL ES history and embedded graphics role
- https://www.apple.com/newsroom/2014/06/02Apple-Unveils-iOS-8-the-Biggest-Release-Since-the-Launch-of-the-App-Store/
Supports
- Metal introduction in 2014 and lower-overhead access to GPU hardware on iOS
- https://www.khronos.org/news/press/khronos-releases-vulkan-1-0-specification
Supports
- Vulkan 1.0 release on 2016-02-16 and explicit cross-platform GPU control
- https://devblogs.microsoft.com/directx/announcing-microsoft-directx-raytracing/
Supports
- DirectX Raytracing announcement on 2018-03-19 and acceleration structures with ray shader stages
- https://developer.chrome.com/blog/webgpu-release
Supports
- WebGPU availability in Chrome 113 in 2023 and modern browser GPU access
- https://www.vulkan.org/
Supports
- Vulkan product landscape role and open standard status
- https://www.opengl.org/
Supports
- OpenGL product landscape role and cross-platform scope
- https://developer.microsoft.com/en-us/games/products/directx/
Supports
- DirectX product landscape role for Windows and Xbox graphics development
- https://developer.apple.com/metal/
Supports
- Metal product landscape role on Apple platforms
- https://www.w3.org/TR/webgpu/
Supports
- WebGPU product landscape role for portable web graphics and compute
- https://www.unrealengine.com/
Supports
- Unreal Engine landscape role, source access, and licensing model
- https://unity.com/products/unity-engine
Supports
- Unity Engine landscape role and licensing model
- https://godotengine.org/
Supports
- Godot landscape role, open-source licensing, and rendering engine access
