程序员有什么办法可以直接将数据写入显存吗?我知道操作系统对此非常严格,但是某些类型的应用程序(例如视频播放器或电脑游戏)如何将其数据直接写入视频内存。
我知道有很多知名的库(例如 OpenGL);但它们毕竟只是普通的库,它们和我和你写的程序没有根本区别。
我知道有很多知名的库(例如 OpenGL);但它们毕竟只是普通的库,它们和我和你写的程序没有根本区别。
哦,他们是quite与“普通图书馆”不同。
以OpenGL为例。其中一部分是您加载的 DLL 或 SO。但其中一部分是所谓的“驱动程序”或“图形驱动程序”。那根本不是一个“普通的图书馆”;它是一个图书馆。它从根本上来说是操作系统的一部分。它基本上是操作系统制造商以外的人编写的操作系统的一部分。
系统定义驱动程序的接口,硬件制造商提供适合该接口的驱动程序库。但这不是普通用户能够提供的,大多数游戏也不是通过安装自己的显卡驱动程序来运行的。
驱动程序的目的是为操作系统和操作系统客户端的图形硬件提供统一的接口。不同的硬件是不同的,但是操作系统的每个驱动程序都导出相同的接口(或多或少),这使得客户端代码不必了解硬件的详细信息。
This also防止客户端代码破坏系统。如果你的 GPU 崩溃了(因为它是处理器,现在你可以这样做),就必须有人来处理这个问题。操作系统处理 CPU 故障,现在的图形驱动程序/操作系统处理GPU也有过错。但要做到这一点,它必须介于您和硬件之间。
在大多数操作系统上,directly and 任意地不允许访问视频内存。不适用于本身不是图形驱动程序的任何程序。许多低级 API(例如 OpenGL)允许您映射某些内存分配,以便您可以访问它们。但这与仅仅给某人一个 GPU 内存指针有很大不同。毕竟,无法保证映射的指针实际上指向 GPU 内存。
哦,他们不允许您映射纹理或帧缓冲区,因为他们希望保留实现定义的硬件纹理格式的细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)