开始学习OpenGL.在现代Linux上,所有这些概念如何相关?

开始学习OpenGL.在现代Linux上,所有这些概念如何相关?,第1张

概述我开始学习OpenGL,因为那是我选择的硕士学位课程的一部分.在课堂上,加速3D图形在MS Windows上实现(实际上可能使用DX3d而不是OpenGL,不确定).但是,我已经使用 Linux多年了,而且我很肯定它是正确的开发环境,当你可以自由选择时.但是,据我所知,加速3D,特别是驱动程序和硬件支持,在Linux上是一团糟.所以,请帮助我将以下一堆概念组织成一个合理的结构,因为这是我能看到和理 我开始学习OpenGL,因为那是我选择的硕士学位课程的一部分.在课堂上,加速3D图形在MS Windows上实现(实际上可能使用DX3d而不是OpenGL,不确定).但是,我已经使用 Linux多年了,而且我很肯定它是正确的开发环境,当你可以自由选择时.但是,据我所知,加速3D,特别是驱动程序和硬件支持,在linux上是一团糟.所以,请帮助我将以下一堆概念组织成一个合理的结构,因为这是我能看到和理解事物的唯一方法.

>首先,有司机. NVIDIA和AMD专有,加上“nouveau”和一些开放的Radeon驱动程序,以及一个实验性的AMD开放但仍然是正式的.这似乎很清楚.
>其次,有一种叫做“台面”的东西.那是什么?它是仅为免费驱动程序定义的,它是免费驱动程序项目的一部分,还是定义和要求,无论使用何种驱动程序?
>在2)的开发中,究竟什么是“opengl”以及它包含在哪里:台面,驱动程序,还有什么?它可以是专有的吗?
>最后,鉴于以上三点,在现代linux系统上获取和安装OpenGL意味着什么?

解决方法 OpenGL是一个界面.要使用它,您需要一个实现. OpenGL有很多实现.因为每个实现都不同,所以当您使用不同的实现运行它时,程序的行为会有所不同,即使您的程序是相同的.具有硬件渲染器的典型OpenGL实现将包括在用户空间(动态库)中运行的一些代码,在内核中运行的代码(设备驱动程序),在X.org服务器中运行的代码(DDX驱动程序),以及在显卡本身(固件)上运行的代码.这是四个不同的代码片段!

AMD和nVIDia为linux提供专有的OpenGL实现.这些实现具有闭源驱动程序,其中taint the kernel,意味着如果出现问题,linux开发人员无法帮助您.它们支持最新的OpenGL版本(例如4.5,如果你的硬件能够),并支持完整的兼容性配置文件.

Mesa为linux提供了一个开源的OpenGL实现.此实现可以使用Noveau或Radeon开源驱动程序,它们不会污染内核. Mesa还有一个名为llvmpipe的软件实现,它只在你的cpu上运行,不需要驱动程序.它的速度令人印象深刻,但速度远远低于过时的硬件实现速度. Mesa最近开始支持OpenGL 4.x系列,但它需要一段时间才能过滤发行版发布周期,所以你更有可能看到OpenGL 3.3–而且只有核心配置文件,你只限于3.0使用兼容性配置文件(类似于它在OS X上的工作方式).

由于Mesa开发人员对图形卡的文档访问权限以及开发资源有限,因此AMD或nVIDia卡上的Mesa实现通常比供应商的实现慢,并且通常支持更少的OpenGL扩展.但是,Mesa实现非常可靠,它不会污染你的内核,而且一些Mesa实现甚至是Valgrind-clean.

安装OpenGL只是意味着在你的系统上安装一个OpenGL实现(你知道,使用dnf或apt或其他).这通常意味着在供应商实施和Mesa实施之间做出选择……除了Intel集成显卡,其中Mesa是供应商实现.

总结

以上是内存溢出为你收集整理的开始学习OpenGL.在现代Linux上,所有这些概念如何相关?全部内容,希望文章能够帮你解决开始学习OpenGL.在现代Linux上,所有这些概念如何相关?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1023654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存