6
$\begingroup$

What is the practical difference between 3D Graphics Engine (OGRE), 3D Game Engine (Quake), 3D Software Rendering Engine, 3D Graphics API (OpenGL/DirectX)?

Is OpenGL/DirectX a 3D Graphics API or a 3D Software Rendering Engine?

If I want to start learning 3D computer graphics and geometric modeling, which one do I need?

$\endgroup$
  • $\begingroup$ 3D computer graphics and geometric modeling includes a ton of things, ranging from lighting algorithms over mesh processing algorithms to the 'creative' task of creating a 3-dimensional virtual object, complete with textures and possibly animations. Except for being in the same space, these things don't have too much in common. Could you go into detail on what exactly you want to learn? $\endgroup$ – David Kuri Sep 8 '15 at 12:36
  • $\begingroup$ @DavidKuri, computergraphics.stackexchange.com/questions/1455/… $\endgroup$ – user464 Sep 8 '15 at 13:49
  • $\begingroup$ The way I read your other questions, you want to learn everything from the ground up. So after software rasterization (in which you are essentially replicating the job of the dedicated GPU), plain renderings APIs would be next. $\endgroup$ – David Kuri Sep 8 '15 at 13:54
  • $\begingroup$ @DavidKuri, I didn't get you. $\endgroup$ – user464 Sep 8 '15 at 13:56
  • $\begingroup$ You seem to be interested in learning, more so than creating an application. You will probably not learn how, for example, shadow techniques work if you start using a game engine, because they are already there and ready to use. Start with a low-level rendering API and implement a shadowing technique yourself to learn it. $\endgroup$ – David Kuri Sep 8 '15 at 13:58
13
$\begingroup$

At the base, rendering APIs like OpenGL or Direct3D provide a unified interface to communicate with graphics adapters at a low level. Differences in hardware are hidden behind the abstraction which simplifies development a lot.

The low-level APIs provide basic functionality, which gives you total control but leaves you without a lot of desired features. 3D Rendering Frameworks like OGRE or Irrlicht introduce the more understandable concept of 3D objects that can be moved in space (without having to worry about transformation matrices most of the time), introduce light sources and algorithms for shadow casting (e.g. shadow mapping), loading of common mesh formats, and the list goes on. I call this a framework, because you still need to develop the application yourself using actual code, while an engine provides you with an application to develop your software in. This is just my personal distinction and both terms are used differently in a variety of contexts.

In a 3D Authoring / Rendering Software like Blender or Autodesk Maya (offline) or 3DExcite DeltaGen (real-time) you can load, display or create meshes using the built-in functionality. These applications target the creation of 3D data, images or movies, and usually you can't create interactive applications easily with it. Be aware that some 3D Authoring have modules specifically targeting this, e.g. Blender and the integrated Blender Game Engine.

A 3D Game Engine finally provides you with all the tools to make it easy for you to develop a game. You will usually be provided with a level editor, a material editor and maybe a visible scripting language (like Unreal's Blueprint or earlier Kismet) to implement dynamic behavior and interactivity. You don't have to worry about rendering algorithms, because they are already implemented for you. Your engine of choice may for example feature SSAO and cascaded shadow maps for dynamic objects and a solution to bake global illumination for static geometry. Also, a game engine includes way more than only rendering, e.g. artificial intelligence, sound, loading of assets, exporting your content into a ready-to-install package etc.

As you can see, each software package generally puts another layer of abstraction on, ideally making your life simpler. Each has its own purpose and allows you to do different things. Note that said terms are very broad and people have different opinions and sometimes even debates about where one category ends and the next one begins. My advice is to not lose sleep over it.

$\endgroup$
  • 5
    $\begingroup$ Nitpicking: Blender has also an integrated Game Engine. $\endgroup$ – Wumpf Sep 8 '15 at 14:09
  • 1
    $\begingroup$ @Wumpf there is also nothing that states maya can not be used for interactive game like elements. It can, this is how mayas motion capture works, its just not very conductive as a game engine given the software price. Anyway the terms are decidedly diffuse. $\endgroup$ – joojaa Sep 10 '15 at 6:20
  • $\begingroup$ I edited the answer to include your remarks. Thanks. $\endgroup$ – David Kuri Sep 10 '15 at 9:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy