如何在C编程中访问显示器和扬声器



我只懂C编程。使用C编程,我想建立自己的库(控制我的显示器和扬声器(,这对我的项目特别有用。

我不想要任何具有不同功能的现成库,我只想直接控制计算机的每个像素(至少是我的计算机的显示器,我稍后会考虑跨平台(和扬声器的每个振动。

我怎么能拿到这个?


第一次编辑:在评论部分/答案中获得一些信息后,我有了一个的理解,在现代计算机中,直接访问是不可能的,因为显示器和扬声器的各个方面都由操作系统控制,我只能请求操作系统在其窗口中显示图形,或者通过将我的声音预编码为支持的音频格式之一来播放声音(如果我错了,请纠正我(。

现在,让我们改变这个场景。我有显示器(带驱动程序硬件(、扬声器(带驱动软件硬件(和Micro控制器。

现在,通过编码我自己的操作系统并在微控制器中启动它,我可以直接控制计算机的每个像素和扬声器的每个振动。

你不能。你必须让操作系统为你做这件事——事实上,这就是操作系统的全部意义。这意味着要么直接从汇编代码中进行系统调用(在Linux上很难;在Windows上几乎不可能,因为它们没有文档(,要么使用库来告诉操作系统做一些事情。

你可能对使用一个尽可能接近操作系统的库感兴趣——";不包括电池"-所以在Linux中,这将是类似ALSA(声音(和XCB(图形(的东西,而不是类似Qt的东西。

你可以最大限度地减少你的库使用量——例如,如果你制作一个像素阵列,你只告诉操作系统";请创建一个窗口";以及";请在我的窗口中画出这些像素";以及";请播放这个声音数据";。

当然,也可以告诉它让你的程序全屏显示,这样用户就看不到其他任何东西了。这通常是通过制作一个窗口,然后使窗口全屏来完成的。Linux确实有办法获得更直接的屏幕控制——将屏幕访问为";帧缓冲装置"-但如果你使用这个,你就不能同时运行任何其他图形程序(甚至不能在桌面上运行(。你仍然要求操作系统在屏幕上显示像素,而不是与硬件对话。

如果你想编写一个不使用操作系统运行的程序,这是一个完全不同的问题(仍然很难(。

最新更新