5
\$\begingroup\$

I'm planning on developing a game (targeting towards PC and Linux) and putting it up on Steam in the future but I am not sure of what version of OpenGL to target so that the majority of steam users can be able to play my game.

I know Steam has a hardware survey but I'm still not sure of what OpenGL to use but a lot of people recommend OpenGL 3.0 and to make sure not version OpenGL 3.x since 3.x != 3.0.

\$\endgroup\$
  • \$\begingroup\$ Which platform(s) do you plan on supporting? PC? Mac? Linux? \$\endgroup\$ – Adam Feb 21 '15 at 10:37
  • \$\begingroup\$ PC and Linux since i understand that Mac has issues with OpenGL, ill edit that in since i didn't think about it, thank you. \$\endgroup\$ – Angel Flores Feb 21 '15 at 10:39
4
\$\begingroup\$

For PC, this question looks like a duplicate of What OpenGL version(s) to learn and/or use? so I'm not going to repeat that answer here.

For Mac, Apple provide a nice table at https://developer.apple.com/opengl/capabilities/

Essentially anything newer than 3.3 on a Mac is not going to work on all graphics cards, and you may well want to go with 3.2 (with GLSL 1.5) to support older versions of the operating system.

\$\endgroup\$
  • \$\begingroup\$ Thank you, ill read into that then and hopefully find my answer. i appreciate the help. \$\endgroup\$ – Angel Flores Feb 21 '15 at 10:53
  • \$\begingroup\$ ok so from what i read, the way to go is OpenGL 3.0 to be able to support all users on steam using DX 10 and DX 11 since it supports about 97% of steam users, right?, and OpenGL 4 if I aim to make a great game and support 77% of users, correct? \$\endgroup\$ – Angel Flores Feb 21 '15 at 11:02
1
\$\begingroup\$

What version of OpenGL should I target for Steam?

All of them.

Jokes aside, there is no definite version to target and previous statement holds some truth. Although I would use ~GL3.0 as the minimum requirement, everything else is optional. This is quite simply, because you obviously can't take use extensions which are not supported while it would also be stupid not to take advantage of the hot new extensions. This requires quite a bit of coding of course because you need to check which extensions are supported and select different ways to acheive a specific goal using said extensions but imo its the way to go. And with some clever abstraction it's not that hard.

A good example of this is GL_ARB_direct_state_access. Although support is still not that great with some odd 20%, but why wouldn't I take advantage of it on the platforms that do support it.


TL:DR
Around GL3.0 should be the minimum required version while still using optional extensions that are available.

\$\endgroup\$
1
\$\begingroup\$

If you want it to work on a Mac too then use 3.2. It has most things you need. If you want fancier things like tessellation and don't want to support Macs I suggest you go for 4.3. It is supported by most iGPU-s and should be a valid baseline. DirectX and OpenGL version have no correlation. I would suspect 90%+ of hardware of Steam users to be capable of OpenGL 4.3.

Take a look at https://www.opengl.org/wiki to find out what is the lowest OpenGL version that supports the features that you want.

\$\endgroup\$
-3
\$\begingroup\$

On PC if you are starting right now I would target 4.5 and possibly even go to vulkan. By the time you get it done most people will have it anyway, if they don't already - and this will make your work much easier.

The next logical place is 3.3, but at this point cards with only 3.3 are about 10 years old or something. Assuming you are still working with this engine in another 10 years do you really want to have 20 year old legacy code dragging it down by then?

\$\endgroup\$
  • 1
    \$\begingroup\$ Vulkan and DX12 are significantly more complex than GL or DX11. Sending someone new to graphics programming down that path may not be the wisest move. \$\endgroup\$ – 3Dave Sep 2 '16 at 2:18

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.