【问题标题】:Supporting between GL versions 3.1 and 4.x支持 GL 版本 3.1 和 4.x
【发布时间】:2012-11-02 21:05:52
【问题描述】:

自从我学习 OpenGL 以来,我一直在进退两难:虽然我有一块支持 GL 4.3 的好显卡(nVidia GTX 550 ti 型号),但我的笔记本电脑却没有集成显卡(英特尔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 上下文之间进行调解。

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

【问题讨论】:

  • "我不知道这张卡是否甚至能够支持 OpenGL 3.2。" 它是 capable 的。它可能永远不会,因为英特尔不会更新它的驱动程序,但硬件能够做到这一点。事实上,它在 MacOSX 下提供 3.2 支持。
  • 您到底要什么有点不清楚。我在这里看到的唯一问题是 OpenGL 的哪个版本提供了明确的顶点属性索引规范。
  • @NicolBolas 问题已更新。
  • 现在听起来您要求我们为您提供高于 1.40 的 GLSL 版本的列表。
  • 这很糟糕吗?可以为我指明正确方向的某种 URL 怎么样?

标签: opengl cross-platform preprocessor glsl


【解决方案1】:

我通常会在 OpenGL registry 上查看名为 glcorearb.h 的最新标头。它列出了从 1.0 开始的每个函数定义,并按定义标记了它们被引入(并符合条件)的各个版本。

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

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

检查the specthis 是否有预处理器指令等。

这有帮助吗?

【讨论】:

  • 我想我可能误解了你的问题。您想在代码中 发现 OpenGL/GLSL 支持,还是自己发现以便可以适当地编码?
  • 对不起,我想我也误解了你刚才所说的话:你发现代码中的 OpenGL/GLSL 支持而不是我自己是什么意思?如果您的意思是直接写入窗口管理系统(例如 Win32 或 XORG)而不是使用诸如 GLFW 之类的东西来创建窗口和渲染上下文,我将使用 GLFW 和 GLEW。
  • 等等,我想我明白你的意思了;我想使用诸如预处理器指令或任何 OpenGL/相关函数之类​​的代码在代码中发现它,这样我就可以动态调用我需要的东西。例如,#ifdef OPENGL_3_1 /* code for OpenGL 3.1 only */ #else /* code for OpenGL > 3.1 */
  • @about:我相信存在类似的预处理器,例如#version VERION,其中 VERSION 被支持的 GPU 版本取代。但this 似乎另有说法。编辑:两个下划线被粗体标记取代,但我的意思是--Version--,其中-是一个_。
  • @Kos:“3.3 预处理器有一个预处理器可以在编译过程中处理源字符串”来自spec
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 2022-06-21
相关资源
最近更新 更多