绘制没有桌面环境C ++的图形?

时间:2012-11-12 00:06:41

标签: c++ graphics

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

基本上,当您启动较旧的计算机或现代服务器计算机或其他内容时,它们会启动到终端屏幕。你所做的就是打字。如果您想以图形方式执行任何操作,通常需要下载桌面环境。

但我想知道,如何在没有桌面环境的情况下绘制图形

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

很抱歉,如果这个问题有点不明确,但我真的很想指出正确的方向。

5 个答案:

答案 0 :(得分:6)

这是通过使用帧缓冲控制台完成的。然后使用可以在其上绘制的框架/库。例如DirectFB。还有一些小型库,如libFB。我认为SDL也可以使用framebuffer。从来没有尝试过。

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

还有SVGAlib,它直接与显卡对话,但它现在已经过时了。不建议。一般来说,你正在寻找“Linux帧缓冲图形”。这应该会给你一些起点。

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

答案 1 :(得分:0)

通常,“桌面环境”(在Linux上)由两部分组成:类似XWindow的图形“库”加上“窗口管理”(Gnome,KDE,Xcfe,..)。因此,如果我理解您的问题,那么只有必须在没有窗口管理器的情况下设置XWindow系统。

答案 2 :(得分:0)

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

较新的操作系统(即Windows)将阻止您执行以下任一操作:而是调用O / S API,该API调用特定于操作系统的视频设备驱动程序,该驱动程序将输出到硬件。 / p>

答案 3 :(得分:0)

当我读到它时,你会问如何直接处理图形硬件。

这取决于硬件。

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

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

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

答案 4 :(得分:-1)

curses(或ncurses)库是Unix风格的旧方法,虽然现在可能有更好的东西......