为什么 khronos 不通过删除旧功能来清理 opengl API?

问题描述 投票:0回答:1

OpenGL 中的许多东西都是为了向后兼容,这使得有时编写干净的代码变得极其困难。 根据 GL 版本的不同,某些参数的含义会发生变化,某些功能的工作方式也会有所不同,但主要是许多功能不再需要。

例如,DSA 现在是核心的一部分。 当要求函数加载库获取我的函数指针时,它当然可以忽略任何根本不打算使用的内容,但是有什么反对像 gl4CreateBuffers 等简单的东西呢? 这样,跨版本工作方式不同的函数将不再是问题,因为您可以指定要使用的版本。 在对 opengl 版本采用模块化方法时,可以为每个版本包含一个特定的标头,或者至少摆脱在新版本的函数中不再有意义的旧的已弃用参数。

在驱动程序内部,如果有必要,它仍然可以映射到相同的旧功能,或者其他什么。

opengl version
1个回答
0
投票

首先,OpenGL 自 2017 年以来就没有发布版本。很明显,Khronos 小组认为 OpenGL 已经完成或至少处于维护模式。在许多情况下,主要的新 GPU 功能甚至无法适应 OpenGL 的 API(请参阅光线追踪)。因此,如果您问为什么您可能想要完成的任何特定事情尚未完成,主要答案是 OpenGL 的所有者对尝试改进它并不感兴趣。

其次,

gl4CreateBuffers
并不比
glCreateBuffers
更复杂。后者甚至少了一个性格。因此,任何 1:1 功能映射实际上都不是一种改进。

第三,他们已经尝试删除 GL 3.2 中的内容。这对一些实现有所帮助,但“粗糙”的构成随着时间的推移而变化。即使这也要求用户使用更新的 API,这将需要重写教程等以专注于它们。这不太可能。

总的来说,在这一点上,根本没有什么意义。

© www.soinside.com 2019 - 2024. All rights reserved.