在普通电脑的显示模式变化(分辨率,深度)过程中会发生什么? (古典台式电脑和笔记本电脑)
它可能不是那么微不足道,因为video卡是如此不同,但有一点是共同的:
屏幕变黑(可以理解,因为信号是closures的)
信号以新模式返回需要几秒钟的时间
如果它在D3D或GL下:
graphics设备丢失,所有VRAM对象都必须重新加载,使得模式更改时间更长
有人可以解释这种潜在的性质,特别是为什么一个显示模式的变化不是一个简单的重新分配缓冲器(s),并采取这样一个“长”的时间?
Windows StretchBlt API性能
在direct3d应用程序中呈现格式化的文本
从设备(video)内存直接在当前窗口中显示位图
如何在windows c ++中使用titlebar创build一个无边框窗口
保持全屏的XNA游戏在上面
不同显卡上的DirectXfunction
使用GeForce 960M在笔记本电脑上初始化D3D12debugging接口失败
为什么Direct3D只能在Windows上工作?
在Windows / D3D中检测.png alpha通道
如何获取dxgi中显示器/输出的当前显示模式(分辨率,刷新率)?
实际上唯一改变的就是所谓的RAmdac(直接连接到视频RAM的数字模拟转换器)的设置,现在很好的数字连接,它更像是RAMTX(连接到视频RAM的DVI / HDMI / displayPort发射器)。 DOS图形程序员的老兵可能还记得RAmdac,规范和自己的代码之间的战斗。
它实际上不需要几秒钟,直到信号返回。 这是一个相当快的过程,但是大多数显示设备需要花时间与新的信号参数同步。 实际上,写得很好的司机们之间的变化几乎立即发生在垂直空白之间。 几年前,当显示器,错误,stupider和analogue,更改视频模式设置后,人们可能会看到图片在短时间内疯狂,直到显示器重新同步(也许我应该采取这个视频,而我仍然拥有这个设备)。
由于实际发生的只是RAmdac设置的变化,只要基本参数保持不变,就不会丢失数据丢失:每像素的位数,每像素的像素数量和像素跨度。 实际上,OpenGL上下文通常不会在视频模式改变的情况下丢失数据。 当然,可见的framebuffer布局会改变,但是当移动窗口时也会发生这种情况。
不过,DirectX图形有点不同。 有设备独占访问权限,无论何时在Direct3D全屏模式和常规桌面模式之间进行切换,所有图形对象都将被交换,这就是DirectX Graphics从游戏切换到Windows桌面时的原因。
如果像素数据格式发生变化,通常需要对可见帧缓冲区进行完全重新初始化,但现在的GPU在将异构像素格式映射到目标帧缓冲区方面非常出色,所以在这里也不会出现延迟。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。