AI readme
This commit is contained in:
parent
9953bc13e9
commit
26edf2c408
211
README.md
211
README.md
@ -1,2 +1,211 @@
|
||||
# DeerithEngine
|
||||
# MyEngine
|
||||
|
||||
A C++20 game engine project built with CMake and OpenGL.
|
||||
|
||||
## Requirements
|
||||
|
||||
Ubuntu with the following packages installed:
|
||||
|
||||
* CMake >= 3.20
|
||||
* GCC / G++
|
||||
* Make or Ninja
|
||||
* OpenGL development libraries
|
||||
* GLFW3
|
||||
* GLM
|
||||
* spdlog
|
||||
* fmt
|
||||
|
||||
Install the dependencies with:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
|
||||
sudo apt install \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
libglfw3-dev \
|
||||
libglm-dev \
|
||||
libspdlog-dev \
|
||||
libfmt-dev \
|
||||
libgl1-mesa-dev
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
Clone the repository and enter the project directory:
|
||||
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd DeerithEngine
|
||||
```
|
||||
|
||||
Create a separate build directory:
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -G Ninja
|
||||
```
|
||||
|
||||
Build the project:
|
||||
|
||||
```bash
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
The project uses C++20.
|
||||
|
||||
## Running
|
||||
|
||||
After a successful build, run the sandbox application with:
|
||||
|
||||
```bash
|
||||
./build/sandbox/Sandbox
|
||||
```
|
||||
|
||||
If the executable is generated in a different location depending on the CMake configuration, you can find it with:
|
||||
|
||||
```bash
|
||||
find build -type f -executable -name "Sandbox"
|
||||
```
|
||||
|
||||
Then execute the resulting path.
|
||||
|
||||
## Project Structure
|
||||
|
||||
```text
|
||||
MyEngine/
|
||||
├── CMakeLists.txt
|
||||
│
|
||||
├── deerith_engine_core/
|
||||
│ ├── CMakeLists.txt
|
||||
│ ├── include/
|
||||
│ │ └── deerith/
|
||||
│ └── src/
|
||||
│
|
||||
├── deerith_engine_client/
|
||||
│ ├── CMakeLists.txt
|
||||
│ ├── include/
|
||||
│ │ └── deerith/
|
||||
│ ├── src/
|
||||
│ └── shaders/
|
||||
│
|
||||
├── sandbox/
|
||||
│ ├── CMakeLists.txt
|
||||
│ └── src/
|
||||
│ └── main.cpp
|
||||
│
|
||||
└── build/
|
||||
```
|
||||
|
||||
The `build/` directory is generated by CMake and should not be committed to Git.
|
||||
|
||||
## CMake Targets
|
||||
|
||||
### DeerithCore
|
||||
|
||||
`DeerithCore` is the engine's core library.
|
||||
|
||||
Dependencies:
|
||||
|
||||
* `spdlog`
|
||||
* `fmt`
|
||||
|
||||
It exposes its headers through:
|
||||
|
||||
```text
|
||||
deerith_engine_core/include
|
||||
```
|
||||
|
||||
### DeerithClient
|
||||
|
||||
`DeerithClient` contains the graphics/client-side engine functionality.
|
||||
|
||||
Dependencies:
|
||||
|
||||
* `DeerithCore`
|
||||
* OpenGL
|
||||
* GLFW
|
||||
* GLM
|
||||
|
||||
It also copies the engine shaders into the build directory automatically.
|
||||
|
||||
### Sandbox
|
||||
|
||||
`Sandbox` is the executable used to test and develop the engine.
|
||||
|
||||
It links against:
|
||||
|
||||
```text
|
||||
DeerithClient
|
||||
```
|
||||
|
||||
## Shader Files
|
||||
|
||||
Shaders are located in:
|
||||
|
||||
```text
|
||||
deerith_engine_client/shaders/
|
||||
```
|
||||
|
||||
CMake automatically copies them to the corresponding build directory:
|
||||
|
||||
```text
|
||||
build/deerith_engine_client/shaders/
|
||||
```
|
||||
|
||||
This is done by the `DeerithClientShaders` custom target.
|
||||
|
||||
## Clean Build
|
||||
|
||||
To completely remove the generated build files:
|
||||
|
||||
```bash
|
||||
rm -rf build
|
||||
```
|
||||
|
||||
Then configure and build again:
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -G Ninja
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
## Debug Build
|
||||
|
||||
For a Debug build:
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
Run the application:
|
||||
|
||||
```bash
|
||||
./build/sandbox/Sandbox
|
||||
```
|
||||
|
||||
## Release Build
|
||||
|
||||
For a Release build:
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
When adding new `.cpp` files to the engine, CMake automatically detects them through `GLOB_RECURSE` with `CONFIGURE_DEPENDS`.
|
||||
|
||||
After adding or removing source files, rebuild normally:
|
||||
|
||||
```bash
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
If CMake does not detect a project configuration change correctly, reconfigure:
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -G Ninja
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user