GLEE – DirectX Engine

GLEE – DirectX Engine

GLEE – or graphics/game library and extensible engine – is an “under-development” engine for 3D graphics and game applications written in C++ using the DirectX rendering API. It bears absolutely no resemblance to the television show of the same name. However, if it were sentient, it would probably enjoy show tunes.

Current Features

Per-Pixel Lighting: A shader-based implementation of the Phong shading and reflection model for accurate lighting at the pixel level. Currently supports up to 16 directional and point lights (8 of each).

Multiple Windows/Viewports: Multiple viewports and render windows can be freely created/adjusted at runtime. Potential applications include level editors and 3D editing software.

Flexible Cameras: Fixed, first- and third-person cameras are all supported. The latter can be controlled by either keyboard and mouse or (Xbox 360) gamepad input. Each can be tied to a specific viewport allowing for multiple views of a scene.

XML Scene Loading: Each scene is organized as a scene graph containing numerous scene nodes. Each of these can be described in an XML file and loaded in at runtime; therefore reducing compilation time.

    <node type="Light" name="The Sun">
      <lighttype>directional</lighttype>
      <direction x="0.0" y="-1.0" z="0.0" />
      <diffuse a="1.0" r="1.0" g="1.0" b="1.0" />
      <specular a="1.0" r="0.6" g="0.6" b="0.6" />
    </node>

Collision Detection: Collisions tests between spheres and axis-aligned bounding boxes (AABBs) are supported. An event-based system allows individual nodes/classes to respond to collision events as required.

Terrain: Terrain class supports generation using a heightmap, and rendering using multiple textures blended together based on terrain height. Collision with the terrain is supported to allow for objects to move around on its surface.

L-Systems: Simple scholastic, bracketed L-Systems allow for “procedurally” generated trees and foliage to decorate scenes. Currently limited to being rendered as collections of line primitives.

Input: Raw (unprocessed) keyboard and mouse input fully supported to allow for highly-accurate user input. Microsoft’s XInput library utilized to support input from an Xbox 360 gamepad.

Soure Code: Coming Soon! (Available on request)


3 Responses so far.

  1. CaseOfInsanity says:

    This is a pretty cool project.

    But what was your motivation behind making a 3D game engine?

    I had a look at your Escape from Alcatraz UDK video and thought you could work on making an awesome game in UDK instead of making a game engine from scratch.

  2. Karn Bianco says:

    Thanks! This project is primarily a learning experience rather than a means to and end. I also plan to use it as a test-bed for further learning/work.

    I’m interested in water simulation/shaders, for example, but not for a specific game. I hope to use this engine as a foundation for that and other mini-projects.

    If I had a specific game idea in mind I would probably use UDK or C#/XNA. I’m actually working on a little UDK project with an artist at the moment. :)

  3. [...] course (before my internship) I: created a 3D software renderer from scratch using C++; developed a graphics/game engine foundation based on DirectX; created two relatively complete games (one solo, one in a team of [...]

Leave a Reply

Connect with Facebook