IAGHI
IA Graphics Hardware Interface — a modern, lightweight C++23 graphics abstraction over Vulkan.
IAGHI reduces Vulkan boilerplate while keeping explicit control: opaque handles, dynamic rendering, simplified resource states, and Auxid Result<T> error handling.
Requirements
- C++23 compiler (MSVC, Clang, or GCC)
- Vulkan SDK and development libraries
- CMake 3.28+
- LibAuxid (submodule) for
import auxid - Documentation build: Doxygen 1.9.8+ (1.11+ recommended for modules), Python 3 with packages in
docs/requirements.txt
Using the library
Link against the CMake target IAGHI and import modules (no public headers):
import iaghi;
import iaghi.utils; // optional: GLSL compile, staging, default textures
ghi::InitInfo init_info = {};
init_info.app_name = "My App";
init_info.validation_enabled = true;
init_info.surface_width = 1920;
init_info.surface_height = 1080;
auto device = ghi::create_device(init_info).value();
ghi::CommandBuffer cmd = ghi::begin_frame(device);
// ... record commands ...
ghi::end_frame(device);
Features
- Batch create/destroy for buffers, images, and samplers
- Simplified synchronization via
EResourceState - Dynamic descriptor tables and binding layouts
- SPIR-V shaders, off-screen rendering, render-to-texture
- Automatic GPU selection (discrete → integrated → virtual)
- Optional
iaghi.utilsfor GLSL→SPIR-V, image loading, and defaults
Examples
| Example | Path | Topic |
|---|---|---|
| Hello Triangle | examples/hello-triangle |
Device init, basic drawing |
| Rotating Cube | examples/rotating-cube |
Uniforms, push constants, depth |
| Off-screen Rendering | examples/offscreen-rendering |
Headless rendering |
| Hello Compute | examples/hello-compute |
Compute pipeline |
| Render to Texture | examples/render-to-texture |
Multi-pass rendering |
API reference
Generated from Doxygen comments in the public modules. Start here:
- API overview
- Main module (
iaghi) - Definitions (
iaghi.definitions) ghinamespace- Utils (
iaghi.utils) ghi::utilsnamespace
Building the documentation
pip install -r docs/requirements.txt
cd docs && mkdocs serve
Open http://127.0.0.1:8000. Static output is written to docs/site/.
With CMake (when Doxygen and Python3 are found):
cmake --build --preset <your-preset> --target docs
cmake --build --preset <your-preset> --target docs-serve
License
Copyright © 2026 IASoft (PVT) LTD. Licensed under the PolyForm Noncommercial License 1.0.0.