C++ 当没有GPU或显示器连接到PC时,操作系统的显示缓冲区是否仍然存在?

C++ 当没有GPU或显示器连接到PC时,操作系统的显示缓冲区是否仍然存在?,c++,windows,screen,gpu,monitor,C++,Windows,Screen,Gpu,Monitor,所谓显示缓冲区,是指存储显示器屏幕截图(即整个显示器屏幕)的缓冲区。 我正在尝试设计一个软件,它可以连续捕获屏幕图像并将它们组合成视频。 我想知道的是:- 1) 显示器上显示的图像像素存储在计算机中的具体位置(GPU内存,RAM)? 2) 当没有gpu和显示器连接到电脑时,此图像是否仍然存在 编辑:我的目标是windows操作系统。如果有某种“显示驱动程序”,那么就会有某种形式的帧缓冲区(显示的内容)。具体采用什么形式以及如何访问它取决于操作系统。但在大多数系统中,您至少需要某种形式的图形处理器

所谓显示缓冲区,是指存储显示器屏幕截图(即整个显示器屏幕)的缓冲区。 我正在尝试设计一个软件,它可以连续捕获屏幕图像并将它们组合成视频。 我想知道的是:- 1) 显示器上显示的图像像素存储在计算机中的具体位置(GPU内存,RAM)? 2) 当没有gpu和显示器连接到电脑时,此图像是否仍然存在

编辑:我的目标是windows操作系统。

如果有某种“显示驱动程序”,那么就会有某种形式的帧缓冲区(显示的内容)。具体采用什么形式以及如何访问它取决于操作系统。但在大多数系统中,您至少需要某种形式的图形处理器(或显示处理器-基本上只是扫描帧缓冲区并按显示器(或手机上的LCD面板)期望的频率一次输出一个像素的基本部分)将数据实际输入显示器,如果这不存在,“显示驱动程序”将毫无意义。但是,有些系统使用网络显示器(例如Windows的“远程桌面”),其中显示缓冲区完全由软件驱动,因此仅使用CPU计算显示的图形,不需要GPU或DP硬件

当然,帧缓冲区不一定存储为“屏幕上显示的”——例如,可以在一个“平面”中存储所有绿色像素,在另一个“平面”中存储所有红色像素,在第三个平面中存储“蓝色”,在第四个平面中存储任何“alpha”。如果每种颜色有8 x 16像素,则分组。或者以压缩形式(例如,对于通过“远程桌面”类型连接使用的软件,可以想象“运行长度编码”帧缓冲区)

“无硬件”显示最明显的情况可能是在虚拟机中。当然,这并不是真正的硬件少,只是图形处理器本身(或“dislay适配器”,实际上是一个显示处理器)完全是基于软件的,但假装是硬件。然而,由于显示处理器非常简单,所有实际的帧缓冲区操作都是在VM本身内部的软件中完成的,显示适配器所做的就是跟踪帧缓冲区的位置,并将其发送到“查看器”(通常作为“远程桌面”、“VNC”或用于查看“远程”显示的类似网络协议)计算机)

要回答您的具体问题:

  • 是的,很可能是其中之一,但也可能是“其他东西”。帧缓冲区的具体存储方式完全取决于整个系统的设计。如果不知道确切的硬件(如MacBook Pro、带有X图形卡的PC、嵌入式系统、智能手机类型Y等)和软件组合(Windows、Linux、自定义操作系统=),我们就无法说明它是如何存储的,因为有尽可能多的解决方案(如果你有很好的想象力,否则还有一些)

  • 如果没有连接监视器,当然-我不知道有哪个系统因为“没有监视器”而禁用了帧缓冲区。当显示器未连接时,VGA/DVI/HDMI接口上的电信号通常会关闭,以减少干扰信号,但图像仍在生成,如果插入显示器,图像会立即显示。如顶部所述,帧缓冲区不需要GPU,它只是更容易/更快

  • 如果有某种类型的“显示驱动程序”,那么就会有某种形式的帧缓冲区(显示什么)。具体采用什么形式以及如何访问它取决于操作系统。但在大多数系统中,您至少需要某种形式的图形处理器(或显示处理器——它基本上只是扫描帧缓冲区的基本部分,并与显示器(或手机上的LCD面板)期望的频率同步,一次输出一个像素)以实际将数据馈送至显示器,如果不存在,则为“显示驱动程序”这是毫无意义的。但是,有些系统使用网络显示器(例如Windows的“远程桌面”),其中显示缓冲区完全由软件驱动,因此显示的图形仅使用CPU计算,不需要GPU或DP硬件

    当然,帧缓冲区不必“按屏幕上的显示”存储——例如,可以将所有绿色像素存储在一个“平面”,将所有红色像素存储在另一个“平面”,将“蓝色”存储在第三个平面,将任何“阿尔法”存储在第四个平面。如果每种颜色的像素为8 x 16,则分组存储。或者以压缩形式存储(例如,对于通过“远程桌面”类型连接使用的软件,可以想象“运行长度编码”帧缓冲区)

    “无硬件”显示最明显的情况可能是在虚拟机中。当然,这不是真正的无硬件,只是图形处理器本身(或“dislay adapter”,实际上是一个显示处理器)完全基于软件,但假装是硬件。然而,由于显示处理器非常简单,所有实际的帧缓冲区操作都是在虚拟机本身的软件中完成的,显示适配器所做的就是跟踪帧缓冲区的位置并将其发送给“查看器”(通常为“远程桌面”、“VNC”)或用于查看“远程”计算机显示的类似网络协议)

    要回答您的具体问题:

  • 是的,最有可能是其中之一,但也可能是“其他东西”。帧缓冲区的具体存储方式完全取决于整个系统的设计。不知道确切的硬件(例如MacBook Pro、带有图形卡X的PC、嵌入式系统、智能手机类型Y等)和软件组合(Windows、Linux、custom OS=,关于它是如何实现的,我们无从谈起