如何在C编程中访问Display和speaker?
How to access Display and speaker in C programming?
我只会C编程。
使用 C 编程,我想构建自己的库(以控制我的显示器和扬声器),这对我的项目特别有用。
我不想要任何具有不同功能的现成库,我只想要直接控制 计算机的每个像素(至少我电脑的显示器,我稍后会考虑跨平台)和我的扬声器的每一次振动。
我怎样才能得到这个?
第一次编辑:
在 comment-section/answers 中获得一些信息后,我 了解到 在现代计算机中,直接访问是不可能的,因为显示和扬声器的每个方面都由 OS,我只能请求 OS 在它的 Window 中显示图形,或者通过在其中一个中预编码我的声音来播放声音支持的音频格式(如果我错了请纠正我)。
现在,让我们换个场景。我有显示器(及其驱动硬件)、扬声器(及其驱动硬件)和微控制器。
现在,通过编写我自己的 OS 代码并在我的微控制器中启动它,我可以直接控制 每个像素 和我的扬声器 每次振动 。
你不能。您必须让 OS 为您完成 - 事实上,这就是 OS 的全部意义所在。这意味着要么直接从汇编代码进行系统调用(在 Linux 上很难;在 Windows 上几乎不可能,因为它们没有记录)或使用库告诉 OS 做事。
您可能有兴趣使用尽可能接近 OS 的库 - “不包括电池” - 所以在 Linux 中,它类似于 ALSA(声音)和 XCB (图形)而不是像 Qt 这样的东西。
您可以尽量减少对库的使用 - 例如,如果您创建一个像素数组,并且您只告诉 OS“请创建一个 window”和“请在其中绘制这些像素”我的 window”和“请播放此声音数据”。
当然也可以让它让你的程序全屏显示,这样用户就看不到其他任何东西了。这通常是通过制作 window 然后制作 window 全屏来完成的。 Linux 实际上有办法获得更直接的屏幕控制 - 将屏幕作为“帧缓冲设备”访问 - 但如果你使用它,你不能同时 运行 任何其他图形程序(甚至桌面也不行)。而且您仍在要求操作系统在屏幕上放置像素 - 而不是与硬件对话。
如果您想编写一个 运行 没有 OS 的程序,那是一个完全不同的问题(而且仍然很困难)。
我只会C编程。 使用 C 编程,我想构建自己的库(以控制我的显示器和扬声器),这对我的项目特别有用。
我不想要任何具有不同功能的现成库,我只想要直接控制 计算机的每个像素(至少我电脑的显示器,我稍后会考虑跨平台)和我的扬声器的每一次振动。
我怎样才能得到这个?
第一次编辑: 在 comment-section/answers 中获得一些信息后,我 了解到 在现代计算机中,直接访问是不可能的,因为显示和扬声器的每个方面都由 OS,我只能请求 OS 在它的 Window 中显示图形,或者通过在其中一个中预编码我的声音来播放声音支持的音频格式(如果我错了请纠正我)。
现在,让我们换个场景。我有显示器(及其驱动硬件)、扬声器(及其驱动硬件)和微控制器。
现在,通过编写我自己的 OS 代码并在我的微控制器中启动它,我可以直接控制 每个像素 和我的扬声器 每次振动 。
你不能。您必须让 OS 为您完成 - 事实上,这就是 OS 的全部意义所在。这意味着要么直接从汇编代码进行系统调用(在 Linux 上很难;在 Windows 上几乎不可能,因为它们没有记录)或使用库告诉 OS 做事。
您可能有兴趣使用尽可能接近 OS 的库 - “不包括电池” - 所以在 Linux 中,它类似于 ALSA(声音)和 XCB (图形)而不是像 Qt 这样的东西。
您可以尽量减少对库的使用 - 例如,如果您创建一个像素数组,并且您只告诉 OS“请创建一个 window”和“请在其中绘制这些像素”我的 window”和“请播放此声音数据”。
当然也可以让它让你的程序全屏显示,这样用户就看不到其他任何东西了。这通常是通过制作 window 然后制作 window 全屏来完成的。 Linux 实际上有办法获得更直接的屏幕控制 - 将屏幕作为“帧缓冲设备”访问 - 但如果你使用它,你不能同时 运行 任何其他图形程序(甚至桌面也不行)。而且您仍在要求操作系统在屏幕上放置像素 - 而不是与硬件对话。
如果您想编写一个 运行 没有 OS 的程序,那是一个完全不同的问题(而且仍然很困难)。