不推荐的OpenGL函数

时间:2012-12-19 18:17:49

标签: opengl

我目前正在通过5th Superbible学习OpenGL。它会教你核心资料。但我真的很困惑。

我知道khronos删除了3.3中的固定功能管道,并将一些函数声明为已弃用。但是,Superbible现在只是将这些已弃用的函数替换为自己的函数。

为什么khronos会删除像glRotate或matrixstack这样的东西,以便我必须使用第三方库(或我自己的)而不是官方库?

也许这种超级明星有缺陷?

2 个答案:

答案 0 :(得分:6)

glRotate()等被删除,因为内部openGL处理​​矩阵所以它是一个更简洁的设计,让你直接提供矩阵。

几乎所有复杂的openGL应用程序都会做一堆其他矩阵的东西,并且会有自己的矩阵类,openGL更容易获取结果,而不是坚持从一堆旋转中创建它们/翻译/缩放电话。

他们可以提供自己的矩阵类 - 但是你可以使用很多第三方库。 openGL的一个策略(失败)是它确实依赖第三方库来执行实际图形之外的任何事情。因此,初学者程序是GLUT,GLEW,SDL等的一个棘手的组合,可以在屏幕上显示任何内容 - 而DirectX具有开箱即用的所有功能。

答案 1 :(得分:3)

Khronos从核心配置文件中删除了这些功能,但它们在兼容性配置文件中仍然可用。 主要原因之一是表现:

在当今的大多数应用程序中,必须在渲染器和应用程序之间来回传递的信息量大于十年前。因此,ARB提出了缓冲区(顶点数组和顶点缓冲区对象),以最大限度地利用主系统和渲染硬件之间的可用带宽。但是,如果您开始使用VBO机制来传输数据,那么大多数遗留功能将变得无用。

尽管如此,除了需要支持遗留应用程序(这是兼容性配置文件的充分理由)之外,我认为此API仍然可用于学习目的。

至于你的主要问题,上面的内容仅适用于OpenGL的完整版本,而不适用于不支持旧原语的ES版本,在这种情况下,仿真层是必需的。