Tool
OaViewer
Universal GPU-accelerated image and video viewer with smooth pan, zoom, and channel inspection. One binary, any Vulkan device.
| API level | Level 0 — OaViewer + OaDeviceUiApp |
| Modes | Image2D, Video, Scene3D, Matrix heatmap |
| GPU pipeline | Vulkan compute → bindless descriptor → swapchain blit |
| Input | Mouse drag/wheel pan & zoom, keyboard shortcuts, Wayland touch gestures |
| Source | Source/Public/Oa/Ui/Viewer.h |
Image Viewer — Pan & Zoom
Video Player — H.264 Decode
Controls
| Input | Action |
|---|---|
Scroll wheel | Zoom in / out (animated) |
Drag | Pan the view |
+ / - | Keyboard zoom in / out |
0 | Fit to window |
9 | Zoom to 100% |
1 | Red channel (grayscale) |
2 | Green channel (grayscale) |
3 | Blue channel (grayscale) |
4 | Alpha channel (grayscale) |
5 | RGB full colour |
Arrow keys | Pan up / down / left / right |
Q / Esc | Quit |
Quick Start
Minimal setup — pass a path and run:
Viewerquickstart.cpp
// ═══════════════════════════════════════════════════════════════════════════// OA Viewer — Universal Image & Video Viewer// Level 0 API — OaViewer with OaDeviceUiApp// ═══════════════════════════════════════════════════════════════════════════#include <Oa/Ui/Viewer.h>int main(int argc, char** argv) {OaViewer viewer(argc > 1 ? argv[1] : "Asset/Image/Realm1024px.jpg");return viewer.Run().IsOk() ? 0 : 1;}
Configuration
Full configuration via OaViewerConfig:
Viewerconfig.cpp
OaViewerConfig config;config.Mode = OaViewerMode::Image2D;config.Path = "Asset/Image/Realm1024px.jpg";config.Title = "OA Image Viewer";config.Width = 1280;config.Height = 720;OaViewer viewer(config);viewer.Run();