在2.1上下文中使用OpenGL GLSL 3.3

时间:2014-07-07 19:49:37

标签: c++ linux opengl nvidia glfw

我有一张旧的Nvidia显卡(Go GeForce 7400),据我所知只支持OpenGL 2.1。即使我强制GLFW在这台机器上创建3.3上下文,程序也会保证崩溃或返回NULL窗口。但是,我发现机器实际上可以在2.1上下文中运行一些用GLSL 3.3版编写的简单着色器。他们甚至有#version 330 core版本声明。令我惊讶的是,程序在编译这些着色器时没有抱怨,一切似乎都有效。

所以这就是我所做的:

  1. 使用GLFW创建上下文,并特别将2.1作为版本号传递。
  2. 加载和编译用GLSL 3.3编写的着色器,一切都像魔法一样。
  3. 据我了解,GLSL 3.3仅适用于OpenGL 3.3+。在此之前,OpenGL 2.1的GLSL版本实际上是1.20。所以有人能告诉我发生了什么吗?这是因为我的显卡驱动程序“偷偷地”''实现了GLSL 3.3但仅支持OpenGL 2.1 API?一般来说,有什么机会找到这种奇怪的组合?我很确定我不应该假设GLSL 3.3在一般的2.1环境中工作,我应该吗?

    BTW我认为我正在使用Linux Nvidia专有驱动程序。

0 个答案:

没有答案