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