Giter Site home page Giter Site logo

lod's Introduction

Land of Dreams

A simple OpenGL 2.1 game engine, written in C++. It features a CDLOD terrain renderer, a mesh loader and render using assimp, GPU skinning animation built on top of that, as well as exponential shadowmaps and several aftereffects (tone mapping, bloom, depth of field, lens flare)

This is just an educational project. I don't own the rights for every media in the application.

A screenshot of the engine: screenshot

Dependencies:

  • C++11 compiler. (clang recommended)
  • OpenGL 4.3, Shader model 430
  • GLEW - for loading OpenGL extensions
  • Magick++ - for image loading.
  • Assimp - for loading 3D models.
  • FreeType2 - for text rendering (via freetype-gl).
  • Bullet - for physics (isn't fully integrated yet).
  • Included dependencies:
    • oglwrap - my C++ OpenGL wrapper.
    • freetype-gl - for GUI texts
    • GLFW3 - for window handling
    • glm - for linear algebra

How to build (Debian/Ubuntu):

mkdir LandOfDreams && cd LandOfDreams && sudo apt-get install libmagick++-dev libglew-dev libassimp-dev libbullet-dev cmake xorg-dev libglu1-mesa-dev && git clone --recursive https://github.com/Tomius/LoD.git && cd LoD && make -j4 && ./LoD

How to build (Linux):

  • get the external dependencies: libmagick++-dev libglew-dev libassimp-dev libbullet-dev libglm-dev libglfw3-dev cmake xorg-dev libglu1-mesa-dev
  • initialize the oglwrap submodule: git submodule init && git submodule update
  • build with make (uses clang++), run with ./LoD

How to build (Windows): OUTDATED

  • if you downloaded LoD using git, but you didn't use git clone --recursive, then you have to initilaize oglwrap with git submodule init && git submodule update. If you download it via http, you will have to download oglwrap too, and paste it into src/oglwrap
  • dowload all the third party libraries pre-compiled from here
  • add thirdparty/include to compiler search path
  • add thirdparty/lib to linker search path
  • specify the linker inputs (thirdparty/lib/linker_inputs.txt), or the linker flags (thirdparty/lib/linker_flags.txt)
  • enable c++11 mode with your compiler
  • compile every .cc file, but none of the .c or .cpp files
  • copy the thirdparty/bin files to the exe's directory

Acknowledgements

  • Darkz for useful feedback and help with the fixing of several bugs.
  • Kristóf Marussy (kris7t) for a lot of useful advices and catching many implementation-dependent bugs.

Inspirations, resources and tools:

lod's People

Contributors

tomius avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.