SoftPixel Engine Logo

Welcome to the SoftPixel Engine
Welcome to the homepage of the SoftPixel Engine, a high-level real-time 3d engine written in C++ for Windows and Linux.
It is designed for writing 2d- and 3d games and graphics applications. You will see the performance and the big collection of functions for rendering 3d worlds and drawing primitives or complex 2d objects.

Look at the features to see the highlights!

Follow us on ...


DEVELOPMENT ON STANDBY (since winter 2013)

3rd January 2014:
    Happy Birthday SoftPixel Engine! You are six years old (over 175,000 LoC).

    It's been a long time now that I was working on the engine intensely. And unfortunately this project never became a huge success in the open-source community :-(. But nevertheless I had a lot of fun and ambition by developing this game engine :-). I hope someone can make use of it in the future, even if it's used for educational purposes only ;-). Please take a look at my new project: The XičXič Programming Language, with trans-compiler and virutal-machine.
    Kind regards,
    Lukas Hermanns

News archive

Easy to handle
The SoftPixel Engine is very easy to handle such as the getting started example shows. With one function you can create the following 'primitive' objects:
cube, cone, cylinder, sphere, icosphere, torus (ring), torusknot, pipe, spiral, disk, plane, tetrahedron, cuboctahedron, octahedron, odecahedron, icosahedron, teapot ("Utah" teapot), supershape.

It is also very easy to use the virtual-reality. You can use a 3d glasses with the red-/ and the green glace.

Write applications with the simplicity of Basic languages but the power of C++ and OpenGL!

Getting started
Getting started with a very small program (C++ & SoftPixel Engine v.3.2):

// SoftPixel Engine - Getting started

#include <SoftPixelEngine.hpp>

using namespace sp; // Main namespace

int main()
// The softpixel-device opens the screen (windowed screen / fullscreen are possible)
SoftPixelDevice* spDevice = createGraphicsDevice(
    video::RENDERER_OPENGL, dim::size2di(640, 480), 32, "Getting Started"

video::RenderSystem* spRenderer = spDevice->getRenderSystem(); // Render system for drawing operations
video::RenderContext* spContext = spDevice->getRenderContext(); // Render context for back buffer controll
io::InputControl* spControl = spDevice->getInputControl(); // Controller for keyboard- and the mouse input events

scene::SceneGraph* spScene = spDevice->createSceneGraph(); // Scene graph system to handle a lots of scene objects
spScene->setLighting(true); // Activates global lighting

scene::Camera* Cam = spScene->createCamera(); // Creates a camera to see our scene
scene::Light* Light = spScene->createLight(); // Creates a light (by default Directional light)

scene::Mesh* Obj = spScene->createMesh(scene::MESH_TEAPOT); // Creates one of the 16 standard objects
Obj->setPosition(dim::vector3df(0, 0, 2.5)); // Sets the object position (x, y, z)

// The main loop will update our device
while (spDevice->updateEvents() && !spControl->keyDown(io::KEY_ESCAPE))
    spRenderer->clearBuffers(); // Clears the video buffers (pixel- and depth buffer)     

    spScene->renderScene(); // Renders the scene     

    Obj->turn(dim::vector3df(1, 1, 1)); // Rotates our object     

    spContext->flipBuffers(); // Swaps the video buffer, so we can see the current frame

deleteDevice(); // Deletes the device context and closes the screen

return 0;

SoftPixel Engine and SoftPixel Engine webpage © 2008 by Lukas Hermanns