4

好的,这是一个非常奇怪的问题,我不知道如何表达,但是我似乎在任何地方都找不到任何东西,很可能是因为我没有使用正确的术语。另外,这可能是特定于操作系统的,如果是,我使用的是 Debian。

基本上,当您启动旧计算机或现代服务器计算机或类似的东西时,它们会启动到终端屏幕。您所做的就是输入内容。如果你想以图形方式做任何事情,你通常会下载一个桌面环境。

但我想知道,如果没有桌面环境,我怎么能去绘制图形呢?

我记得在 MS-DOS 上,您可以使用 QBASIC 更改屏幕模式,然后您可以像这样在屏幕上绘制彩色线条。它在 C++ 中可能要复杂得多,但我仍然希望指出正确的方向。

对不起,如果这个问题有点不具体,但我真的很想指出正确的方向。

4

5 回答 5

6

这是通过使用帧缓冲区控制台完成的。然后你使用一个可以利用它的框架/库。例如DirectFB。还有一些小型库,例如libFB。我认为SDL也可以使用帧缓冲区。不过我自己从来没有试过。

然后是 Gtk+ 和 Qt 等 GUI 工具包的帧缓冲版本,如果你想要 GUI 小部件的话。

还有SVGAlib,它直接与显卡对话,但现在已经过时了。不建议。通常,您正在寻找“Linux 帧缓冲区图形”。这应该为您提供一些起点。

要获得帧缓冲区控制台,您需要相应地配置内核。通常你会为你的显卡启用 KMS 驱动程序,并启用 KMS 帧缓冲区。如果您的卡没有 KMS 驱动程序,您可以使用适用于大多数硬件的通用 VESA 帧缓冲控制台(尽管它只是通用 VESA,速度慢且不加速。)

于 2012-11-12T00:14:34.033 回答
0

通常,“桌面环境”(在 Linux 上)由两部分组成:类似 XWindow 的图形“库”加上“窗口管理”(Gnome、KDE、Xcfe 等)。所以,如果我理解你的问题,你需要设置一个没有窗口管理器的 XWindow 系统。

于 2012-11-12T00:18:24.487 回答
0

在 MS-DOS 上,您可以通过写入视频控制器共享的 RAM 范围或调用 BIOS API 来编写写入屏幕的软件。

较新的 O/S(即 Windows)将阻止您执行其中任何一项操作:相反,您调用 O/S API,该 API 调用特定于 O/S 的视频设备驱动程序,该驱动程序输出到硬件。

于 2012-11-12T00:19:49.857 回答
0

当我读到它时,您问的是如何直接处理图形硬件。

这取决于硬件。

如果您手头有一台旧 PC 并想对其进行试验,那么您需要相应的旧开发软件,该软件可以在特定操作系统下在该硬件上运行,即当时在 MS-DOS 中运行的一些 C 编译器。您可以在 Windows 的“DOS 框”中执行此操作(不是控制台窗口,而是旧 PC 的仿真)。64 位 Windows 7 不支持 DOS 盒,但有一个免费的替代品,称为DOSbox

然后,如果你走那条路,你可以在网上搜索“图形适配器”图形模式等。

基本上,对于旧的 PC 架构和在 DOS 下运行的程序,您使用 DOS 服务来切换图形模式,然后您在该模式的已知内存地址处访问图形内存。

于 2012-11-12T00:31:38.777 回答
-1

The curses (or ncurses) library is the old way of doing it in Unix flavours, although these days there is probably something better...

于 2012-11-12T00:08:56.173 回答