0

自从我学习 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 上下文兼容。

如果还有什么不清楚的,我会相应地更新。谢谢。

4

1 回答 1

1

我通常做的是检查OpenGL 注册表中名为 glcorearb.h 的最新头文件。它有一个从 1.0 开始的每个函数定义的列表,并按定义标记了它们被引入(并符合条件)的各个版本。

我不能 100% 确定从哪里获得 GLSL 信息,但他们确实保留了旧版本的规范,因此您可以将最新版本与旧版本进行比较。

编辑:更正了错误的链接。

检查规范this以获取预处理器指令等。

这有帮助吗?

于 2012-11-02T21:13:30.600 回答