6
\$\begingroup\$

I've seen some games from the early 2000s that had a launcher where you could select the rendering engine you wanted to use: DirectX or OpenGL.

Maybe I haven't looked hard enough, but I haven't seen anything like this lately so I have two questions:

  1. Why did they do this before?
  2. Why aren't they still doing it?
\$\endgroup\$
9
\$\begingroup\$

Why did the do this before?

It's complicated.

In the pre-shader days, there were significant differences between OpenGL and D3D. There were also other APIs, like GLIDE. These have since fallen by the wayside.

If the drivers for some particular hardware didn't support OpenGL very well, it might support D3D, so you needed a D3D path. But you could do more stuff with OpenGL via extensions. So having a GL rendering pipeline was important for features.

Why aren't they still doing it?

Because there's no point anymore.

OpenGL and D3D are cosmetically different, but for the most part functionally equivalent. Outside of certain proprietary extensions, you can't really do more with either API.

And the sad fact is that D3D drivers are more likely to be stable on Windows than OpenGL drivers are. Intel's OpenGL drivers are somewhere between terrible and Godawful, while their D3D drivers are somewhere between crap and not entirely incompetent.

You are either writing a Windows-only application, or you aren't. If you are Windows-only, then the reasons for writing a GL rendering pipeline are... rather dubious. You will gain very little by it without using proprietary extensions, and even that won't buy you a lot these days.

And if you're writing a cross-platform or just non-Windows app, then OpenGL is the way to go. Of course, if you want to be cross-platform on Windows, then it wouldn't be a terrible idea to have a D3D rendering path. But at the same time, it isn't that bad to just rely on OpenGL, depending on how wide a net you want to cast for your application.

\$\endgroup\$
2
  • \$\begingroup\$ An extra note is just that many (most?) cross-platform games these days are using D3D for their Windows builds (because the Windows drivers for D3D tend to be more up-to-date and better performing than the Windows drivers for OpenGL), but OpenGL for their non-Windows builds. So the same "this renderer or that renderer" sort of code path is still common, just at a slightly higher level and not exposed to the end-user. \$\endgroup\$ Oct 23 '11 at 6:56
  • \$\begingroup\$ @Trevor Powell, Most likely they are using an engine that already has that decision made for them. \$\endgroup\$
    – Kylotan
    Oct 23 '11 at 16:13

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.