OpenGL 3.3 is supported by GeForce 8 and newer. However, it seems to me like casual users almost NEVER update their graphics drivers. Even I, fairly computer savvy, find that updating drivers is a cumbersome process.
I created an OpenGL app on a pretty new desktop and tried running it on my older laptop which has a GeForce 9600M. However, I had never updated my graphics card driver. I used the driver that was already installed on the laptop out of the box. I then realized it only had support for up to OpenGL 3.1, which meant my GLSL version 330 shaders failed to compile.
Ultimately, I am trying to make an indie game. There are a ton of indie games out there and unless your game is really something great, if people can’t run it without too much trouble, they’ll just pass it up and probably never look at it again.
So I decided that depending on OpenGL 3.3 is not a good idea. However, I don’t want to go all the way back to OpenGL 2.1, since I really like some OpenGL 3.x features.
So, the kind of resource I’m looking for is like a “database” of what OpenGL functions and extensions that various drivers support. Kind of like this: http://delphigl.de/glcapsviewer/listreports.php
But for more general information than just caps.
And like, the OpenGL website has an OpenGL 2.1, 3.3, and 4.2 API. But what if I want a list of features that I know will be supported by most 3.x class hardware, regardless of what drivers are installed? Specifically, I’m thinking OpenGL 3.0 is a good minimum level to work with.
If this becomes too much of a hassle, I’ll just go back to OpenGL 2.1 and GLSL 120 and widely available extensions.
You’re thinking about this the wrong way. Not updating graphics drivers doesn’t just mean not having version 3.3 or version 4.2 or whatever. It means having buggy drivers.
Honestly, if a significant portion of your customer base is expected to not have reasonably up-to-date drivers, then I would suggest switching to Direct3D. Your code is a lot more likely to work on older D3D drivers than older GL drivers, regardless of version number.
Yes, of course older drivers not only mean less OpenGL functionality, but buggy drivers, but I don’t really think people will update drivers just to play some game they aren’t familiar with. That seems to be reality of the situation, and I can’t change that.
I don’t think it’s reasonable for me to learn a whole new API, since I’m just one guy and I only have so much time and effort in me.
But anyways, I’m guessing the answer is no, there is no one-stop resource to determine what OpenGL stuff will work where. I guess I’ll have to rewrite some of my graphics code and rewrite my shaders to conform to #version 130 or #version 120 and OpenGL 3.0 or 2.1. Any less painful ways to do this other than reading the specs?
IMO, it would be very helpful to have something similar hosted at OpenGL.org . An official, central place where such info can be uploaded and viewed. Give it a server-side API. Perhaps even add an (optional) upload function to a popular extension loader like GLEW.
Wait, this is news to me. I’m not targeting Intel cards, only Nvidia/ATI. Windows computers that run out of the box that come with discrete graphics cards will likely have their drivers already installed right?
If someone is going to install Windows, I expect them to install a driver and maybe update it once in a while. But not those people who buy computers with all parts pre-assembled and Windows/drivers already installed.
But not those people who buy computers with all parts pre-assembled and Windows/drivers already installed.
Unfortunately there is a flaw in your thinking.
Windows (to save disk space/CD Rom space) comes with a whole bunch of shrink-wrapped drivers (cut down drivers) so that the installation process goes snoothly and detects a wide variety of ‘supported’ hardware. It’s quite possible that during installation the new(ish) hardware is auto detected and an OEM driver installed. Since there are no warnings in device manager, the end user would not think that the driver is (from an OpenGL point of view) useless.
So, unless the user actually upgrades their drivers, it’s quite possible they will be stuck with an out-of-date driver for OpenGL
BionicBytes, you are describing a situation where the user installs Windows himself right? I mean, if someone has enough initiative to go out and buy separate parts for a computer himself, I’d imagine that person would have enough sense to get the latest drivers from Nvidia. Besides, these people would be more likely to install a driver if you asked them anyway.
But like, when you buy a prebuilt computer from Best Buy or Newegg, with some minimal software (and bloatware) installed, wouldn’t they come with reasonably up to date drivers?