自从我学习 OpenGL 以来,我一直陷入困境:虽然我有一个支持 GL 4.3(nVidia GTX 550 ti
型号)的好显卡,但我的笔记本电脑却没有集成显卡(Intel HD 3000,从一个i5-2410M
到确切地说),它运行版本 3.1。我不知道这张卡是否甚至能够支持 OpenGL 3.2。
无论哪种方式,如果事实证明核心 i3/i5 处理器只需要更新驱动程序来支持 OpenGL 3.2+,我仍然不确定我应该看哪里或者我需要注意什么才能支持3.x 和 4.x。
例如,AFAIK GLSL 1.4 不支持使用该layout(location=x) in blah blah
功能的着色器。但是,GLSL 1.5 有吗?
C/C++和GLSL 中的预处理器指令怎么样,我可以用它来区分哪些功能与哪些功能一起使用?或者,是否更推荐(在 GLSL 或 C/C++ 的情况下)只编写完全独立的头文件/源文件/着色器文件来处理这个问题?
因为我只打算支持 3.x 到 4.x,我知道这应该比它可能的要简单。
更新
最近在我的笔记本电脑上更新了驱动程序后,事实证明,正如 Nicol Bolas 所说,目前英特尔 3000 卡上没有(并且可能永远不会)对 3.2 的任何支持。因此,为了使这个问题更简单,我想知道与 3.3 及更高版本相比,我可以在 3.1 版上实现哪些着色语言功能(无论是在答案中还是在外部 URL 中)。任何与此相关的 OpenGL 特定 C/C++ 特性/功能也将不胜感激。
我的目标是基本上能够知道我必须做什么才能在我正在处理的项目(当前使用 GL 4.0 上下文)之间进行调解以与 3.1 上下文兼容。
如果还有什么不清楚的,我会相应地更新。谢谢。