Feature Matrix
| Feature | CPU | OpenGL | Vulkan |
|---|---|---|---|
| Solid rendering | Yes | Yes | Yes |
| Wireframe rendering | Yes | Yes | Yes |
| Depth buffering | Yes | Yes | Yes |
| Backface culling | Yes | Yes | Yes |
| Flat shading | Yes | Yes | Yes |
| Smooth shading | Yes | Yes | Yes |
| Multi-light (8 lights) | Yes | Yes | Yes |
| Object ID picking | Yes | Yes | Yes |
| Framebuffer readback | Yes | Yes | Yes |
| Offscreen (no window) | Yes | Yes | Yes |
| Gizmo overlay | Yes | Yes | Yes |
| Light indicators | Yes | Yes | Yes |
| Wireframe overlay | Yes | Yes | Yes |
| Normal visualization | Yes | Yes | Yes |
| Bounding box overlay | Yes | Yes | Yes |
| Selection highlight | Yes | Yes | Yes |
| Flex vertex format | Yes | Yes | Yes |
| Undo/redo | Yes | Yes | Yes |
| Particles | Yes | Yes | Yes |
| Water surface | Yes | Yes | Yes |
| Post-processing | Yes | Yes | Yes |
| Platform dependency | None | GL 3.3 | Vk 1.0 |
| GPU acceleration | No | Yes | Yes |
| Implementation status | Full | Contract | Full |
Performance Characteristics
| Backend | Geometry throughput | Pixel fill rate | Readback cost |
|---|---|---|---|
| CPU | Low | Low | Zero (direct memory) |
| OpenGL | High | High | glReadPixels (moderate) |
| Vulkan | High | High | Staging buffer copy (moderate) |
Selection Guidance
- CPU: Testing, CI, environments without GPU, reference output
- OpenGL: macOS or Linux with GL 3.3 support, simple integration
- Vulkan: Maximum control, validation layers, cross-platform GPU access
Default Backend
MOP_BACKEND_AUTO selects:
- OpenGL (if
MOP_HAS_OPENGLis defined) - CPU (always available)
Applications that prefer Vulkan should request it explicitly via MOP_BACKEND_VULKAN.