190 lines
7.7 KiB
Markdown
190 lines
7.7 KiB
Markdown
# dl engine
|
|
|
|
## Language / 语言
|
|
- [English](README.EN.md)
|
|
- [中文](README.md)
|
|
|
|
## Framework Introduction
|
|
dl (drawing library) is a development framework based on C++ language, integrating various C/C++ open source libraries.
|
|
|
|
## Core Design Principles
|
|
1. Use the latest C++ standards
|
|
2. Non-commercial, free
|
|
3. Integrate various open source libraries for easy use
|
|
4. Suitable for developing various native applications, biased towards game engine scenarios
|
|
5. Interface uniformity, cross-platform compatibility
|
|
|
|
#### Supported Platforms
|
|
|
|
| Platform | Windows10 | Linux | Android | MacOS | IOS |
|
|
|----------|-----------|-------|---------|-------|-----|
|
|
| Compilation | OK | OK | OK | OK | TODO |
|
|
| Drawing | OK | OK | OK | OK | TODO |
|
|
| File | OK | OK | OK | OK | TODO |
|
|
| Audio | OK | OK | OK | OK | TODO |
|
|
| OPENSSL | OK | OK | TODO | OK | TODO |
|
|
| Input | OK | OK | Partial | OK | TODO |
|
|
| Network | OK | OK | OK | OK | TODO |
|
|
|
|
## Directory Structure
|
|
```text
|
|
├── build/ # Build-related files and scripts
|
|
├── dl/ # Core engine code
|
|
│ ├── base/ # Basic data structures and tools
|
|
│ ├── io/ # Input/output functionality
|
|
│ ├── math/ # Math library
|
|
│ ├── memory/ # Memory management
|
|
│ ├── misc/ # Miscellaneous functionality
|
|
│ ├── render/ # Rendering system
|
|
│ ├── script/ # Script support
|
|
│ ├── system/ # System functionality
|
|
│ ├── tool/ # Tool classes
|
|
│ ├── ui/ # UI system
|
|
│ └── vk/ # Vulkan rendering
|
|
├── document/ # Documentation
|
|
├── project/ # Project examples and tests
|
|
├── redist/ # Runtime libraries
|
|
├── res/ # Required resource files
|
|
├── shader/ # Shader code
|
|
└── third/ # Third-party libraries
|
|
```
|
|
## Notes
|
|
:heavy_exclamation_mark: `Do not check the option to pull submodules when cloning the repository`
|
|
|
|
:heavy_exclamation_mark: `No release version yet, non-commercial, welcome to join`
|
|
|
|
## Third-party Library List
|
|
| Function Category | Library | Description |
|
|
| :---------------- | :------ | :---------- |
|
|
| 📜 Script Related | angelscript | C++-like strongly typed scripting language (no longer used) |
|
|
| 📜 Script Related | lua | Lua scripting language |
|
|
| 📜 Script Related | LuaBridge3 | Lua binding library |
|
|
| 🌐 Network Communication | asio | Network library, may enter standard library in the future |
|
|
| 🌐 Network Communication | curl | Communication protocol library (supports https with OpenSSL) |
|
|
| 🌐 Network Communication | openssl | Encryption library |
|
|
| 🎵 Audio Processing | flac | FLAC audio format library |
|
|
| 🎵 Audio Processing | ogg | OGG audio format library |
|
|
| 🎵 Audio Processing | openal-soft | OpenAL audio library |
|
|
| 🎵 Audio Processing | vorbis | OGG format related library |
|
|
| 🎵 Audio Processing | minimp3 | MP3 format library |
|
|
| 🎵 Audio Processing | midifile | MIDI library (not yet used) |
|
|
| 🎵 Audio Processing | rtmidi | MIDI library |
|
|
| 🎨 Graphics/Image | freetype | Font parsing library |
|
|
| 🎨 Graphics/Image | libwebp | WebP format library |
|
|
| 🎨 Graphics/Image | lunasvg | SVG format library |
|
|
| 🎨 Graphics/Image | stb_image | Common image format parsing library |
|
|
| 🎨 Graphics/Image | tinygltf | GLTF format library |
|
|
| 🎨 Graphics/Image | tinyobjloader | OBJ format parsing library |
|
|
| 🚜 Physics Engine | box2d | 2D rigid body physics engine (not yet integrated, planned) |
|
|
| 🚜 Physics Engine | JoltPhysics | 3D physics engine |
|
|
| 📊 Data Parsing | json | JSON parsing library |
|
|
| 📊 Data Parsing | libiconv | Character encoding conversion library |
|
|
| 📊 Data Parsing | OpenXLSX | XLSX format parsing library |
|
|
| 📊 Data Parsing | tinyxml2 | XML format parsing library |
|
|
| 📊 Data Parsing | uchardet | Character set detection (not yet used) |
|
|
| 🗜️ Compression | lz4 | LZ4 compression algorithm library |
|
|
| 🗜️ Compression | zlib | Compression format library |
|
|
| 🛠️ Development & Debugging | CrashRpt | Crash collection tool (Windows only) |
|
|
| 🛠️ Development & Debugging | googletest | Unit test library |
|
|
| 🛠️ Development & Debugging | infoware | Hardware information retrieval |
|
|
| 🛠️ Development & Debugging | mimalloc | Memory allocator |
|
|
| 🛠️ Development & Debugging | vld | Memory leak detection (Windows only) |
|
|
| 🔧 General Tools | fmt | Format library, similar to std::format |
|
|
| 🔧 General Tools | glfw | Window library (doesn't support Android, needs separate handling) |
|
|
| 🔧 General Tools | qrcodegen | QR code generation library |
|
|
| 🔧 General Tools | simde | SIMD instruction library |
|
|
| 🔧 General Tools | sqlite | SQLite library |
|
|
| 🔧 General Tools | wcwidth | Character width detection |
|
|
| 🔧 General Tools | cpp-subprocess | Subprocess library |
|
|
| 🔧 General Tools | ktx | KTX texture compression format library |
|
|
| 🔧 General Tools | magic_enum | Enum static reflection |
|
|
| 📋 Unused/Planned | better-enums | Better enums (not yet used) |
|
|
| 📋 Unused/Planned | BigNumber | Big number class (not yet used) |
|
|
|
|
## Installation Guide
|
|
|
|
### Windows
|
|
1. Install VS2022+ (including C++ environment, CMake tools)
|
|
2. Install Vulkan SDK: https://vulkan.lunarg.com/sdk/home
|
|
3. Open the project folder with VS, select the root CMakeLists.txt
|
|
4. Select A.Windows x64 Debug at the top, then compile and execute dl_test.exe
|
|
|
|
### Linux (Ubuntu)
|
|
1. Download VS Code: https://code.visualstudio.com/#alt-downloads
|
|
2. Install VS Code, Git, Vulkan SDK, GLFW, etc.
|
|
|
|
```
|
|
// To improve download speed, please set up a domestic mirror in "Software & Updates" first
|
|
sudo apt update
|
|
//---------------------Install VS Code-----------------------
|
|
//1. Download and install from official website
|
|
sudo dpkg -i *.deb // Switch to the VS Code installation package directory to install
|
|
//2. Search and install from store
|
|
//---------------------Install CMake, Clang, etc.--------------------------
|
|
sudo apt install cmake
|
|
sudo apt install clang
|
|
sudo apt install xorg-dev
|
|
//---------------------Install Vulkan SDK-------------------
|
|
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
|
|
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.268-jammy.list https://packages.lunarg.com/vulkan/1.3.268/lunarg-vulkan-1.3.268-jammy.list
|
|
sudo apt update
|
|
sudo apt install vulkan-sdk
|
|
```
|
|
|
|
3. Open the project folder, select the root CMakeLists.txt to generate
|
|
4. Install VS Code related plugins, CMake, C++, etc.
|
|
5. Select B.Linux Clang at the bottom to compile and execute dl_test
|
|
|
|
### Linux (CentOS)
|
|
|
|
```
|
|
# Install clang
|
|
sudo dnf install clang clang-tools-extra -y
|
|
# Install cmake
|
|
sudo dnf install cmake -y
|
|
# Install curl
|
|
sudo dnf install libcurl-devel -y
|
|
# Clone repository
|
|
cd /opt
|
|
git clone https://gitee.com/lveyou/dl.git
|
|
# Parse dl
|
|
mkdir -p out
|
|
cd out
|
|
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DODE_WITH_DEMOS=false -DDL_EASY=true ..
|
|
# Compile
|
|
make -j4
|
|
|
|
# Clone subproject
|
|
git submodule update --init --recursive project/dl_chess_server/
|
|
```
|
|
|
|
|
|
### Android
|
|
1. Install Android Studio
|
|
2. Install Vulkan SDK: https://vulkan.lunarg.com/sdk/home
|
|
3. Open the build/android directory with Android Studio to compile and execute
|
|
|
|
### MacOS
|
|
1. Install CMake
|
|
```bash
|
|
# Install brew, skip if already installed
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
brew update
|
|
brew install cmake
|
|
```
|
|
2. Install Vulkan SDK: https://vulkan.lunarg.com/sdk/home
|
|
3. Compile, execute in the dl root directory
|
|
```
|
|
mkdir -p out
|
|
cd out
|
|
cmake ..
|
|
make -j4
|
|
```
|
|
|
|
## Usage Instructions
|
|
|
|
Compile dl_test to view test programs, or directly download the preview release version
|
|
|
|
## Discussion Group
|
|
|
|
QQ Group: 512001256 |