horde3d / Horde3D

Horde3D is a small 3D rendering and animation engine. It is written in an effort to create an engine being as lightweight and conceptually clean as possible.
http://horde3d.org/
1.55k stars 308 forks source link
3d-graphics rendering-engine

Horde3D

Horde3D is a 3D rendering engine written in C++ with an effort being as lightweight and conceptually clean as possible.

Horde3D requires a fully OpenGL 2.0 compatible graphics card. In terms of DirectX that means a card supporting at least Shader Model 2.0 or higher. For mobile operating systems (Android and IOS) OpenGL ES 3.0 capable device is required.

Features

Building

You need to have a C++11 compiler and CMake 3.7+ installed.

Use of CMake for Windows, Linux, macOs

CMake is a meta-build system, e.g. it creates Makefiles or Visual Studio files using Generators. The main ways to use CMake are cmake-gui (Qt Interface), ccmake (Curses Interface) and cmake (Commandline Interface). Instructions for commonly used generators:

Build samples

In order to build the samples you need GLFW (>3.x) or SDL (>=2.0.9).

By default, if not present on the system, a default version will be automatically downloaded, built and linked for you.

You could force this behavior using HORDE3D_FORCE_DOWNLOAD_GLFW flag with CMake (from your build directory):

 cmake -DHORDE3D_FORCE_DOWNLOAD_GLFW=ON ..

With SDL you can use HORDE3D_FORCE_DOWNLOAD_SDL flag with CMake (from your build directory):

 cmake -DHORDE3D_FORCE_DOWNLOAD_SDL=ON ..

On Debian/Ubuntu platforms, you also need to install the following packages:

 sudo apt-get install xorg-dev

You could also skip sample building using HORDE3D_BUILD_EXAMPLES flag with CMake (from your build directory):

 cmake -DHORDE3D_BUILD_EXAMPLES=OFF ..

Building for Android

Building for Android requires using two build systems: CMake and Gradle. Gradle project is included in Horde3D distribution.

Requirements:

Android Studio is recommended, but not required.

CMake GUI usage is recommended. Following instruction depends on using GUI for building.

Building for iOS

Currently, building is supported only on macOS. Only iPhone target is supported for now, iPad and tvOS are not tested,

A new version of CMAKE is recommended, Cmake 3.16 was tested and was working correctly.

Requirements:

CMake GUI usage is recommended. Following instruction depends on using GUI for building.

SDL is required for samples. Automatic download and build is disabled for iOS as SDL fails to build with CMAKE (HORDE3D_FORCE_DOWNLOAD_SDL will have no effect ). Please download SDL manually and build it with XCode project, located in /XCode-iOS/SDL. In Build Settings set Enable Bitcode option to No,

To get your development team id go to Applications -> Utilities -> Keychain Access. Under the 'login' Keychain, go into the 'Certificates' category.

Scroll to find your development or distribution certificate. It should be something like that: Apple Development: ()

Double click on this certificate. "Organizational Unit" is the Team ID.

Please note that ParticleVortex and Tessellator sample will not run on iOS as OpenGL ES 3.2 is not available.

Build Horde3D scene editor

There is also a scene editor available for Horde3D. To enabling build of the editor, first make sure you have the Qt 4.8 or any newer Qt 5.x SDK installed. To enable creating makefiles for the editor via cmake set the HORDE3D_BUILD_EDITOR flag to ON (default is OFF).

cmake -DHORDE3D_BUILD_EDITOR=ON

As the editor needs Lua as a dependency you can either make sure the Lua development files can be found by cmake, or Lua will be automatically downloaded by CMake.

What's next

Here are some quick links to help you get started:

License

Horde3D is licensed under the Eclipse Public License v1.0 (EPL).

The EPL is a quite liberal license and has fewer restrictions than the popular LGPL. Basically it allows you to use Horde3D in free and commercial projects as long as you contribute improvements like bug fixes, optimizations and code refactorings back to the community. The EPL allows static linking and is not viral; hence it does not affect any other modules of your application.