使用 FreeBasic,我可以创建并打开一个具有功能的新屏幕ScreenRes
。例如,
#include "fbgfx.bi"
ScreenRes 640, 480, 32
Sleep()
将创建一个深度为 32 的 640 x 480 屏幕。
那么,C++ 中是否有与此等价的函数?
注意:我使用的是 Ubuntu 14.04。我更喜欢跨平台或基于 linux 的功能,而不是基于 Windows 的功能。
使用 FreeBasic,我可以创建并打开一个具有功能的新屏幕ScreenRes
。例如,
#include "fbgfx.bi"
ScreenRes 640, 480, 32
Sleep()
将创建一个深度为 32 的 640 x 480 屏幕。
那么,C++ 中是否有与此等价的函数?
注意:我使用的是 Ubuntu 14.04。我更喜欢跨平台或基于 linux 的功能,而不是基于 Windows 的功能。
不,那里没有。C++ 本身是一种非常纯粹的语言,只包含基本功能(例如通用列表、排序算法、字符串或内存管理工具)。我不知道 FreeBasic,但从您的问题来看,它似乎是其中已经包含许多特定高级功能的语言之一。这可以是诅咒或美德,这取决于您的要求。
如果您需要 C++ 中的图形,那么您“必须”(==> 诅咒)或“可以”(==> 美德)使用完全符合您需求的第 3 方库。要对屏幕进行完整的像素控制,请考虑SDL。
正如他们所说,C/C++ 中没有这样的东西。要在 C 中制作图形,您需要依赖外部库,您可能不想这样做,因为您说您更喜欢“基于 linux 的函数”。
不幸的是,仅通过操作系统附带的库访问 Linux 中的图形非常复杂,并且您的程序无法移植到其他系统。(如果您仍然想这样做,您可能想阅读有关 Linux 线性帧缓冲区或 X 的信息)。
我认为与您所要求的最接近的解决方案是您获得了一个带有简单原语的小型库。我认为 SVGALib 是这样的:http ://www.svgalib.org/
我没有使用它,但就我所读到的而言,它有点类似于 Turbo/Borland C++ 曾经附带的 graphics.h。例如,您可以使用 SVGALib 执行此操作:
#include <stdlib.h>
#include <vga.h>
int main(void)
{
vga_init();
vga_setmode(G320x200x256);
vga_setcolor(4);
vga_drawpixel(10, 10);
sleep(5);
vga_setmode(TEXT);
return EXIT_SUCCESS;
}
在那里你可以看到如何设置模式。我很确定它也会支持 32 位 :)
我对 Linux 不太熟悉,但是,这种性质的事情在 C++ 中并不容易,因为 C++ 是一种语言,它不知道“屏幕”是什么。有一些库和框架可以帮助您,例如 SDL、SFML 等等,它们可以帮助您找到正确的方向。