GLSL弃用

时间:2015-01-15 00:00:37

标签: opengl deprecated glew

我已经分段升级了我的项目。我现在还在使用gl_ModelViewProjectionMatrix。

我使用OpenGL 3.1 Compatablity 1.4 GLSL这在我的电脑上工作正常。当我尝试将其移动到另一台计算机时,它给出了以下错误:

C7533:版本120之后不推荐使用全局变量gl_ModelViewProjectionMatrix

为什么一台计算机允许弃用功能而另一台计算机不允许?我需要移动到另一台计算机吗?这听起来像是一个警告,但对象要么没有绘制,要么没有被翻译。

2 个答案:

答案 0 :(得分:1)

顺便提一下,GLSL着色器版本和上下文版本是两个独立的东西。在GLSL 1.20(GL 2.1中引入)之后,gl_ModelViewProjectionMatrix 弃用是正确的,因为GL 3.0已弃用(并且GL 3.1没有删除GL_ARB_compatibility)整个固定功能矩阵堆栈。 GLSL版本1.50向GLSL引入了配置文件,它们仍然独立于上下文版本,但工作方式相同 - 在以后的核心GLSL版本中,不推荐使用的东西通常会被删除

尽管如此,我真的不知道这是如何工作的。如果您确实拥有GL 3.1核心上下文,则没有可以设置与gl_ModelViewProjectionMatrix关联的矩阵的命令(无论您的GLSL编译器是否接受它)。在GL 3.1中删除了glLoadMatrix (...)等等。

但是,我怀疑你没有通常认为的“核心”上下文。 GL 3.1是一个丑陋的东西,它早于将配置文件引入OpenGL。虽然技术上删除了几乎所有在GL 3.0中弃用的内容,但如果扩展名GL_ARB_compatibility存在,则实际上我们称之为“兼容性配置文件”。

答案 1 :(得分:0)

好吧,看来我的问题的根源是这台电脑有一块Nvidia显卡。为了解决错误(我认为应该是一个简单的警告)我将我的GLSL编译器版本更改为" #version 150兼容性"和OpenGL到3.2

这说服了Nvidia GLSL编译器停止抱怨并完成其工作。我准备好后,我将从ff矩阵堆栈升级。