不推荐使用的OpenGL函数
我目前正在通过第五本超级圣经学习OpenGL。它会教你核心档案。但我真的很困惑 我知道khronos在3.3中删除了固定函数管道,并宣布一些函数已弃用。但是Superbible现在只是用它们自己的函数替换那些不推荐使用的函数 为什么khronos要删除glRotate或matrixstack之类的东西,这样我就必须使用第三方库(或我自己的库)而不是官方库 也许superbible有缺陷?glRotate()等被删除,因为openGL内部处理矩阵,所以直接提供矩阵是一种更干净的设计 几乎所有具有任何复杂性的openGL应用程序都将执行一系列其他矩阵操作,并将拥有自己的矩阵类。openGL更容易获取结果,而不是坚持通过一系列旋转/平移/缩放调用创建它们不推荐使用的OpenGL函数,opengl,Opengl,我目前正在通过第五本超级圣经学习OpenGL。它会教你核心档案。但我真的很困惑 我知道khronos在3.3中删除了固定函数管道,并宣布一些函数已弃用。但是Superbible现在只是用它们自己的函数替换那些不推荐使用的函数 为什么khronos要删除glRotate或matrixstack之类的东西,这样我就必须使用第三方库(或我自己的库)而不是官方库 也许superbible有缺陷?glRotate()等被删除,因为openGL内部处理矩阵,所以直接提供矩阵是一种更干净的设计 几乎所有具有任
他们可以提供自己的矩阵类,但是有很多第三方LIB可以使用。openGL的一个策略(失败)是它确实依赖第三方LIB来完成实际图形之外的任何事情。因此,初学者程序是GLUT、GLEW、SDL等的复杂组合,可以在屏幕上显示任何内容,而DirectX则提供了所有现成的功能。Khronos从核心配置文件中删除了这些功能,但它们仍然可以在兼容配置文件中使用。 主要原因之一是性能: 在当今的大多数应用程序中,渲染器和应用程序之间必须来回传递的信息量比十年前要大。因此,ARB提出了缓冲区(顶点数组和顶点缓冲区对象),以最大限度地利用主系统和渲染硬件之间的可用带宽。但是,如果您开始使用VBO机制来传输数据,那么大多数遗留函数将变得无用 这就是说,除了需要支持遗留应用程序(这是兼容性配置文件的充分理由)之外,我认为该API对于学习目的仍然有用
至于您的主要问题,上述内容仅适用于完整版本的OpenGL,而不适用于不支持旧原语的ES版本,在这种情况下,仿真层是必要的。您的大多数问题都在这里得到了回答:“矩阵类”–否,他们不能这样做,因为这会将OpenGLAPI限制在开发这些类库的语言中。OpenGL与语言无关,只定义过程入口点应遵循主机系统的C调用约定。DirectX是一组库(包括用于图形的Direct3D),而OpenGL是一个库。该策略是一个陷阱,需要更多的样板代码/设置才能正常工作,但这是一个巨大的好处,因为它比Direct3D更具可移植性。@RobertRouhani缺乏可移植性只是因为DirectX只能从微软购买。没有任何技术可以阻止Khronos将SDL/GLEW类型的函数与openGLIt一起使用,正是因为这一政策,OpenGL被用于一切从智能手机到超级计算机。只是想精确说明OpenGL实际上只希望顶点着色器输出的顶点坐标在剪辑空间中。如何做到这一点取决于你自己(例如:使用矩阵、巫毒等)。