0

我将开始在我的应用程序中实现 OpenGL 3。我目前正在使用 OpenGL 1.1,但如果我尝试更改代码时出现问题,我想保留其中的一些,但我想将我的一些绘图代码更改为更快的 OpenGL 版本。如果我在 OpenGL 1.1 中执行绑定纹理之类的操作,我可以在 OpenGL 3 中绘制纹理吗?

4

2 回答 2

4

混合 OpenGL 版本不像以前那么容易了。在 OpenGL 3.0 中,许多旧功能被标记为“已弃用”,并在 3.1 中被删除。但是,从 OpenGL 3.2 开始,定义了两个配置文件:CoreCompatibility。OpenGL 上下文是根据这样的配置文件创建的。在兼容性配置文件中,所有已弃用(以及在核心配置文件中删除)的东西仍然可用,并且也可以混合使用。您甚至可以将自定义顶点着色器与固定功能片段处理混合使用,反之亦然。

这里的问题是,实现者实际上不需要为兼容性配置文件提供支持。在 MacOS X 上,OpenGL 3.x 和 4.x 仅在核心配置文件中受支持。

在您的具体示例中,绑定纹理将适用于所有情况,因为从 1.1 到 4.3 的所有版本中都存在未修改的功能(并且很可能在不久的将来这样做)。但是,您的大多数绘图调用可能在较新的核心配置文件中不可用。

于 2013-06-30T18:08:30.397 回答
0

Omg .. opengl 1.1 来自 1997 年!帮自己一个忙,摆脱固定功能管道的东西并适应 OpenGL 4.x。但是,您可以尝试#version 420 core

在你的着色器中。

于 2013-06-30T15:23:01.980 回答