在2.1上下文中使用OpenGL GLSL 3.3

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

所以这就是我所做的:

  • 使用GLFW创建一个上下文,并特别传递2.1作为版本号。
  • 加载和编译用GLSL 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的上下文中工作,我应该吗?

    顺便说一句,我认为我正在使用Linux Nvidia专有的驱动程序卡。

    链接地址: http://www.djcxy.com/p/38521.html

    上一篇: Using OpenGL GLSL 3.3 in a 2.1 context

    下一篇: How do I get OpenGL 3.3?