General Question

I’m a total beginner in d3 programming and I have some gernela questions:

  1. Is OpenGL a 3d Enginge?
  2. What does OpenGL
  3. What is/does DirectX?
  4. What are the differences?
  5. Where can I learn something about programming a complete 3DGame in C++? With physik ect.

Please be nice, if I annoyed with these question.
Thanks for your answers

Check out for what OpenGL is. Search for “OpenGL vs Direct3D” in any search engine, including this one.

I wouldn’t attempt trying to write a complete 3D game if you don’t know the above things. Start slow. Go to and start with the first tutorial.

[This message has been edited by starman (edited 08-01-2003).]

  1. OpenGL is a 3D API, not an engine. It is used as the basis of many game engines, but cannot be thought of one on its own. All it handles is rendering 3D (and sometimes 2D) images…things like physics and user interfaces are nowhere to be found.

  2. OpenGL helps to make the abstract world of 3D graphics and maths more user-friendly through functions that would otherwise be nightmares to code by hand.

  3. DirectX is a game development API. It has several components, including Direct3D (3D and 2D graphics), DirectInput (keyboard, mouse, joystick), DirectSound (guess what this does :-P), and others.

  4. Assuming that you are talking about Direct3D only, there are several differences. Direct3D is supported only on Windows systems; OpenGL works across Windows, Mac, and Unix/Linux. Direct3D is proprietary to Microsoft, and any advancements in the API must be made there; OpenGL is updated by the ARB and by individual hardware vendors.

All in all, this means that OpenGL often gets new features sooner, but this non-standardization is just as often a curse for programmers wishing to support all hardware combinations. D3D is a much more uniform spec, but I find it unnecessarily complex in many areas.

  1. Several good websites and books. For a start, try and

Thanks to Jared@ETC
This was exactly wat I wanted to know.
And here comes my next question:
How has a 3D engine to look like? What is a 3D engine? I was allready an NeHe’s but I found just elements. Is a 3d engine a collection of classes and functions that make it easier to draw models?

For many programmers the exact definition of a 3D (game) engine is kind of a philosophical question.
So here is mine:

A 3D engine is a collection of functions, classes AND PROGRAMS, that are responsible for converting 3D data into an optimized form and to display that data.
For example the biggest part of the Q3 engine is not implemented in the game itself. The most important work is done by Qbsp.exe, Qvis.exe and Qrad.exe (i think they are called this way). Those programs take 3D data, delete invisible parts, sort the data in a special way, preprocess the levels, to be able to display the stuff faster and finally also calculate lighting.
For a typical Q3 level this process usually takes several hours.
The “renderer” is (in my opinion) the part which is built in the Q3 exe, which is responsible for displaying that preprocessed data as fast as possible.

Some people say a 3D engine does nothing more than outputing graphics. I would say that is a GRAPHICS engine. A 3D GAME ENGINE is usually a collection of a graphics engine, a physics engine, a sound engine, some functions for handling input, etc.

That means a real 3D engine is typically a complete framework for a program/game. The only part missing is the actual game code.

But as i mentioned before, there is no real definition for a 3D engine. It´s something everyone has his own definition of.

Writing a graphics engine is enough work for one person. And until one gets that far, he will need at least 2 years of learning the basics. Then one can start doing the first humble “engine”.

In my opinion is the best starting point for every OpenGL newbie.



Another question:
what is faster? D3D or OpenGL
And what would suggest me to learn?

Try both; learn whichever one you feel comfortable with.

I mean, come on… Learning one won’t damage your brain so you can’t learn the other at some stage; and you weren’t REALLY expecting a truly independent answer from an opengl forum, right?