c++ - 全屏模式下的Allegro颜色变化

标签 c++ colors fullscreen allegro

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

我正在为 visual studio 2010 和运行的 windows 7 使用预编译的 allegro 4.4.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);

然后您的应用程序将需要居中/缩放图形。这并没有那么难,只需将所有内容绘制到一个中间缓冲区,该缓冲区是您 native 游戏的宽度/高度,然后将其拉伸(stretch)到适当的屏幕尺寸。

总而言之,您真的应该学习 Allegro 5,因为它专为在当今的硬件和操作系统(包括 iOS 和 Android)上运行而设计。

关于c++ - 全屏模式下的Allegro颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12470899/

相关文章:

C++ 排序类比 qsort 更快

c++ - 如何用算术运算操作两个参数的结果?

java - java中的图像操作

Android首选项摘要默认颜色?

javascript - 我们如何移动 Electron 应用程序以在第二/外部屏幕上显示?

c++ - 当 A 和 B 为 "the same"时断言(sizeof(A) == sizeof(B)) 是否安全?

c++ - 在 C++ 中使用 STL 实现图形和树的良好且稳定的方法是什么?

java - JTabbedPane 更改选定选项卡背景颜色

ios - swift:如何使用 InfiniteScrolling 设置 UITableViewCell 显示全屏(允许分页)

安卓应用全屏