什么是OpenGL作为计算机文件

时间:2012-05-12 13:59:28

标签: opengl

好的,我知道在线有数百万个OpenGL是什么答案,但我正在试图弄清楚我的计算机上的文件是什么。我研究并发现OpenGL可以作为不同计算机图形卡的多平台翻译器。那么,那是一个dll吗? 我想知道,如果它是一个dll,那么我不能下载任何版本的dll(最好是最新的),然后使用它,知道它有什么?

编辑:好的,所以如果它是一个Windows dll,并且我制作了一个使用晚期版本的OpenGL游戏,如果在其他人的早期版本的计算机上不支持该怎么办?我可以在我的游戏中携带dll,以便在其他Windows计算机上支持吗?或者dll是否设置为严格在特定计算机上与显卡通信?

OpenGL不断更新(无论是什么)。如果它所做的只是在一堆不同的计算机上与显卡进行通信,而这些计算机具有从未内置过的图形卡,那怎么办呢?

3 个答案:

答案 0 :(得分:4)

有两个"部分" OpenGL - Khronos Group每几个月更新一次的规范,以及由您的显卡制造商专门为您的显卡型号编写的驱动程序。

OpenGL规范基本上详细说明了OpenGL API的所有内容应该如何工作 - 预期的行为应该是什么,何时被认为是意外行为,何时抛出哪些错误等等。规范让驱动程序编写者确切知道他们需要什么做,并让应用程序编写者知道驱动程序的期望。这就是OpenGL真正的"" - 将应用程序和驱动程序保持在一起的粘合剂You can read all the specifications for each version here.

然后有那些实现OpenGL API并被认为符合规范的驱动程序。驱动程序正是您所期望的 - 将数据复制到图形卡的内存中,将数据写入图形卡寄存器,跟踪状态,处理顶点,编译着色器,指示数百个流处理器同时转换顶点和填充像素等。如果没有OpenGL,每个图形卡模型都会有一个单独的,稍微快一点的API,因为它的结构方式只适用于那个显卡。使用OpenGL,驱动程序都是针对相同的API编写的,应用程序的代码将在所有显卡上运行。

OpenGL规范的合规性不随驱动程序更新而变化。大多数驱动程序更新将修复小错误或进行一些内部优化。

我知道ATI驱动程序有一个小错误,你必须先调用glEnable(GL_TEXTURE_2D);,然后才能生成mipmaps OpenGL 3方式(glGenerateMipMaps()),尽管GL_TEXTURE_2D已被弃用作为glEnable()的可能值。我现在不确定它是否已修复,但它肯定是驱动程序编写者容易忽视的边缘情况类型。

至于优化,还有很多需要优化的地方。也许还有另一种在编译时优化着色器的方法,也许在流处理器之间分配工作的效率更高,我不知道。

答案 1 :(得分:3)

OpenGL是图形编程的跨平台API。就编译代码而言,它将作为特定于操作系统的库提供 - 例如Windows中的DLL(opengl32.dll)或Linux中的SO。

您可以从OpenGL.org

获取SDK和二进制可再发行组件

根据您使用的语言,可能会有OpenGL包装器。这些是专门用于您的语言的类或API库。例如,可以为C#/ VB.NET开发人员提供.NET OpenGL包装器。快速谷歌搜索该主题应该会给你一些结果。

答案 2 :(得分:1)

OpenGL API偶尔会发布新版本,但这些更新本质上是向后兼容的。此外,新功能通常作为扩展添加,并且可以检测哪些扩展存在并且仅使用本地可用和支持的扩展...因此您可以构建软件以利用新功能#39;可用,但仍然可以在他们没有时运行。

API与单个驱动程序无关 - 可以在不更改API的情况下更新驱动程序,因此驱动程序不断更新的事实与软件兼容性无关紧要。在该帐户中,您可以选择要开发的API版本,并且只要您的目标操作系统附带与该API兼容的OpenGL库版本,您就不必担心驱动程序更新会破坏您的软件和#39;能够与本地可用的库动态链接。