1

我现在正在学习使用 allegro 库,并且在使用该set_gfx_mode函数时,如果我将GFX_AUTODETECT_FULLSCREEN其用于第一个参数,则在运行编译的应用程序时窗口将全屏显示,但在运行的大约第一秒后,所有颜色都会发生变化。使用任何其他图形模式都不会发生这种情况,但在两台单独的机器上,颜色会在更改为全屏模式后发生变化。以前有没有其他人看到过这种情况?我根本找不到关于这个问题的任何讨论。

我正在为 Visual Studio 2010 使用预编译的 allegro 4.4.2 库并运行 Windows 7。

4

1 回答 1

2

Allegro 4 已经过时,并且使用了现代操作系统不再很好支持的 API。全屏模式会有问题,尤其是在 8 位图形上。获得可靠全屏的最佳方式是尊重用户当前的桌面设置:

int w, h;
get_desktop_resolution(&w, &h);

set_color_depth(desktop_color_depth());
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, w, h, 0, 0);

然后您的应用程序将需要居中/缩放绘图。这并不难,只需将所有内容绘制到一个中间缓冲区,即您的本机游戏的宽度/高度,然后将 blit 拉伸到适当的屏幕尺寸。

话虽如此,您真的应该学习 Allegro 5,因为它旨在适用于当今的硬件和操作系统,包括 iOS 和 Android。

于 2012-09-18T23:07:05.517 回答