Windows 7 Windows7上调色板模式下的Allegro 4.2.4损坏

Windows 7 Windows7上调色板模式下的Allegro 4.2.4损坏,windows-7,allegro,directdraw,palette,Windows 7,Allegro,Directdraw,Palette,我在Windows7中运行Allegro 4.2.4调色板模式(256色)时遇到问题。我在互联网上找到了杀死explorer的解决方案,它确实起了作用,然而,期望最终用户在玩游戏时杀死explorer是荒谬的 然后我找到了解决方案,用黑客版本替换DDraw.dll,但它也不起作用-DDHack只会导致在应用程序启动后根本不显示屏幕 然后我找到了添加注册表黑客的解决方案: Windows Registry Editor Version 5.00 ;This file has been create

我在Windows7中运行Allegro 4.2.4调色板模式(256色)时遇到问题。我在互联网上找到了杀死explorer的解决方案,它确实起了作用,然而,期望最终用户在玩游戏时杀死explorer是荒谬的

然后我找到了解决方案,用黑客版本替换DDraw.dll,但它也不起作用-DDHack只会导致在应用程序启动后根本不显示屏幕

然后我找到了添加注册表黑客的解决方案:

Windows Registry Editor Version 5.00
;This file has been created with DirectDraw Compatibility Tool (http://crappybitter.livejournal.com/tag/ddc_tool)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\MyApp]
"Name"="MyApp.exe"
"ID"=dword:4E7B8A88
"Flags"=hex:00,08,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\MyApp]
"Name"="MyApp.exe"
"ID"=dword:4E7B8A88
"Flags"=hex:00,08,00,00
但遗憾的是,它也不起作用,调色板一直闪烁着彩虹色

除了将整个应用程序移植到不同的编程库之外,我还有其他解决方案吗?是否可以在Vista/W7上修复DDraw问题而不接触调色板?若并没有,那个么在Vista/W7上,哪个库会给我提供调色板编程(我正在做需要调色板的游戏)而不会出现这样的问题

我知道还有一个解决方案——我可以将Allegro 4.2.4应用程序编译为DOS应用程序,并在DosBox中运行。可悲的是,但这就是我现在所能想到的


提前感谢其他解决方案

首先,没有这样的版本4.2.4。我想你指的是4.4.2

真正的调色板是一个垂死的东西。设置8位颜色深度在现代操作系统上不太受支持。关于Allegro 4.4,您可以这样做:

set_color_depth(8);
set_gfx_mode(GFX_GDI, w, h, 0, 0);
它将为您提供窗口模式,以及Allegro 4.4提供的Windows上最兼容的调色板支持。如果您确实必须使用全屏模式,可以尝试以下修补程序:

它修复了游戏中调色板损坏的问题。这可能有助于解决您描述的问题

或者,您可以尝试在屏幕上使用32位颜色深度,并在精灵和缓冲区中使用8位位图:

set_color_depth(desktop_color_depth());
set_gfx_mode(GFX_AUTODETECT, w, h, 0, 0);
BITMAP *buffer = create_bitmap_ex(8, w, h);
当然,在更改调色板后,您必须再次将位图blit到屏幕上,因此如果您需要非常快速的实时效果,它可能无法工作


或者,Allegro 5.1(即未发布的SVN版本)有一个调色板插件,通过着色器工作。它可能没有记录,并且可能会改变。(请注意,5系列与4系列在源代码上不兼容。)

我错了,这是Allegro 4.2.3我正在寻找的创建位图的技巧应该是8 bpp,但它会导致整个屏幕变黑。在这种情况下,您可能必须使用
选择调色板