LukasBanana / Llgl
Licence: other
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
Stars: ✭ 1,011
Projects that are alternatives of or similar to Llgl
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+914.05%)
Mutual labels: opengl, vulkan, metal, directx, d3d11, d3d12
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-86.35%)
Mutual labels: opengl, vulkan, renderer, directx, d3d11, d3d12
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+111.87%)
Mutual labels: opengl, vulkan, renderer, directx, d3d11, d3d12
Renderdoc
RenderDoc is a stand-alone graphics debugging tool.
Stars: ✭ 5,969 (+490.41%)
Mutual labels: opengl, vulkan, directx, d3d11, d3d12
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+13.35%)
Mutual labels: opengl, vulkan, metal, d3d11, d3d12
Pbr
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.
Stars: ✭ 722 (-28.59%)
Mutual labels: opengl, vulkan, d3d11, d3d12
wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (-74.88%)
Mutual labels: metal, vulkan, directx, renderer
Crossshader
⚔️ A tool for cross compiling shaders. Convert between GLSL, HLSL, Metal Shader Language, or older versions of GLSL.
Stars: ✭ 113 (-88.82%)
Mutual labels: opengl, vulkan, metal, directx
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (-73.99%)
Mutual labels: opengl, vulkan, d3d11, d3d12
Fiber2d
Cross-platform 2D Game Engine in pure Swift
Stars: ✭ 415 (-58.95%)
Mutual labels: opengl, vulkan, metal, directx
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-52.72%)
Mutual labels: opengl, vulkan, metal, d3d11
Reshade
A generic post-processing injector for games and video software.
Stars: ✭ 2,285 (+126.01%)
Mutual labels: opengl, vulkan, d3d11, d3d12
Gpu performance api
GPU Performance API for AMD GPUs
Stars: ✭ 170 (-83.18%)
Mutual labels: opengl, vulkan, d3d11, d3d12
CrossWindow-Demos
🥪 Examples of how to use CrossWindow for things like rendering graphics, listening to events, etc.
Stars: ✭ 48 (-95.25%)
Mutual labels: metal, vulkan, directx
LowLevelAPIDemo
Evergine Low-Level API samples.
Stars: ✭ 12 (-98.81%)
Mutual labels: metal, vulkan, directx
rend3
Easy to use, customizable, efficient 3D renderer library built on wgpu.
Stars: ✭ 546 (-45.99%)
Mutual labels: metal, vulkan, d3d12
bgfx-python
Python 3.7+ wrapper for the BGFX library. 🐍
Stars: ✭ 99 (-90.21%)
Mutual labels: metal, vulkan, directx
Urde
Data interchange and engine re-implementation for games by Retro Studios | Mirror
Stars: ✭ 253 (-74.98%)
Mutual labels: opengl, vulkan, metal
virtualGizmo3D
Virtual GIZMO - 3D object manipulator / orientator, via mouse, with pan and dolly/zoom features
Stars: ✭ 36 (-96.44%)
Mutual labels: metal, vulkan, directx
CrossWindow-Graphics
A header only library to simplify creating 🌋 Vulkan / ⚪ OpenGL / 🌐 WebGL / ❎DirectX / 🤖 Metal data structures with CrossWindow.
Stars: ✭ 48 (-95.25%)
Mutual labels: metal, vulkan, directx
Low Level Graphics Library (LLGL)
Documentation
- NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accepted.
- Version: 0.03 Beta (see ChangeLog)
- Getting Started with LLGL (PDF) with Introduction, Hello Triangle Tutorial, and Extensibility Example with GLFW
- LLGL Reference Manual (PDF)
- LLGL Coding Conventions (PDF)
- Examples and Tutorials for C++
- Examples for C#
Platform Support
Platform | CI | D3D12 | D3D11 | Vulkan | OpenGL | OpenGLES 3 | Metal |
---|---|---|---|---|---|---|---|
|
✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | |
|
N/A | N/A | ✔️ | ✔️ | N/A | N/A | |
|
N/A | N/A | N/A | ✔️ | N/A | ✔️ | |
|
N/A | N/A | N/A | N/A | ✖️ | ✔️ | |
|
N/A | N/A | ✖️ | N/A | ✔️ | N/A |
Build Notes
Build scripts are provided for CMake.
Windows
Visual Studio 2015 or later is required to build LLGL on Windows.
macOS, iOS
Xcode 9 or later is required to build LLGL on macOS and iOS.
GNU/Linux
The following development libraries are required to build LLGL on GNU/Linux:
-
X11:
libx11-dev
-
xf86vidmode:
libxxf86vm-dev
-
Xrandr:
libxrandr-dev
Android
The Android NDK with at least API level 21 is required. The build script to generate project files is currently only supported on GNU/Linux and requires CMake 3.10 or later and the Code::Blocks IDE.
This platform support is currently in an experimental state.
Thin Abstraction Layer
// Unified Interface:
CommandBuffer::DrawIndexed(std::uint32_t numIndices, std::uint32_t firstIndex);
// OpenGL Implementation:
void GLCommandBuffer::DrawIndexed(std::uint32_t numIndices, std::uint32_t firstIndex) {
const GLintptr indices = (renderState_.indexBufferOffset + firstIndex * renderState_.indexBufferStride);
glDrawElements(
renderState_.drawMode,
static_cast<GLsizei>(numIndices),
renderState_.indexBufferDataType,
reinterpret_cast<const GLvoid*>(indices)
);
}
// Direct3D 11 Implementation
void D3D11CommandBuffer::DrawIndexed(std::uint32_t numIndices, std::uint32_t firstIndex) {
context_->DrawIndexed(numIndices, firstIndex, 0);
}
// Direct3D 12 Implementation
void D3D12CommandBuffer::DrawIndexed(std::uint32_t numIndices, std::uint32_t firstIndex) {
commandList_->DrawIndexedInstanced(numIndices, 1, firstIndex, 0, 0);
}
// Vulkan Implementation
void VKCommandBuffer::DrawIndexed(std::uint32_t numIndices, std::uint32_t firstIndex) {
vkCmdDrawIndexed(commandBuffer_, numIndices, 1, firstIndex, 0, 0);
}
// Metal implementation
void MTCommandBuffer::DrawIndexed(std::uint32_t numIndices, std::uint32_t firstIndex) {
if (numPatchControlPoints_ > 0) {
[renderEncoder_
drawIndexedPatches: numPatchControlPoints_
patchStart: static_cast<NSUInteger>(firstIndex) / numPatchControlPoints_
patchCount: static_cast<NSUInteger>(numIndices) / numPatchControlPoints_
patchIndexBuffer: nil
patchIndexBufferOffset: 0
controlPointIndexBuffer: indexBuffer_
controlPointIndexBufferOffset: indexTypeSize_ * (static_cast<NSUInteger>(firstIndex))
instanceCount: 1
baseInstance: 0
];
} else {
[renderEncoder_
drawIndexedPrimitives: primitiveType_
indexCount: static_cast<NSUInteger>(numIndices)
indexType: indexType_
indexBuffer: indexBuffer_
indexBufferOffset: indexTypeSize_ * static_cast<NSUInteger>(firstIndex)
];
}
}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].