如何直接访问显示进行绘图

How to directly access the display for drawing

上下文

一段时间以来,我主要将编程作为一种爱好,主要是使用 C# 和 Java。我做了很多需要动画内容的申请(Windows 表格或 Java 表格)。在 Java 中,我会使用 Graphics.drawX() 并根据时间重绘。当动画频繁发生时,分辨率会降低或应用程序会变慢。直到我在同一台计算机上玩视频游戏时才想到它,而渲染一个简单的 Java 应用程序却遇到了很多麻烦。我的电脑怎么能即时渲染复杂的移动环境,却急于显示自制的2048游戏?我想这一定是因为我滥用了绘制函数,或者是因为这些函数没有针对实时渲染进行优化。

问题: 如何不通过预编程功能直接访问显示屏?

我意识到这在高级语言中可能很难,所以让我们在 Windows OS 上用 C 语言说吧。 (但我将不胜感激与任何语言有关的任何答案and/or OS)

我知道这是一个非常含糊的问题,但我似乎找不到合适的词来 Google 它。非常感谢您的帮助!

您不能(或者我应该说永远不应该)尝试直接在 Windows 上访问图形驱动程序。在 Windows 之前,您曾经直接写入视频内存来做图形,因为 DOS 不支持图形或显示管理,而且这些程序的稳定性总是有点不稳定。在 Windows,它拥有屏幕,您必须通过它才能访问它。

基于 Windows 的 OS 的概念是 OS 拥有显示器并授予应用程序访问虚拟显示器的权限,以便 OS 可以隐藏它或移动它。在大多数情况下,这不会导致速度问题;但是,在某些情况下,例如玩游戏,您需要更快的速度;因此,DirectX 允许您将其中一些任务转移到图形卡上,以获得您需要的速度。

有关 DirectX 的更多信息,请查看 Microsoft's Graphics and Gaming 资源