BPP颜色改变SDL

时间:2011-10-31 00:07:10

标签: c++ sdl

每次运行应用程序时,颜色都会改变,显示如下

Display = SDL_SetVideoMode(WIDTH, HEIGHT, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ASYNCBLIT)

然后我做

SDL_FillRect(Display, &Woutput, colors[1]);

colors var info:

Uint32 colors[3];
colors[1] = SDL_MapRGB(Surf_Display->format, 32, 32, 255);

如果我将SDL_FillRect(Display, &Woutput, colors[1]);更改为SDL_FillRect(Display, &Woutput, SDL_MapRGB(Surf_Display->format, 32, 32, 255));,它可以正常工作,这让我相信它与Uint32有关,但不知道要将其更改为什么。

1 个答案:

答案 0 :(得分:1)

我正在添加此评论作为建议的答案。

当您致电SDL_FillRect时,您的颜色数组可能未使用您的预期值进行初始化。当发生这种情况时,颜色将具有任何随机垃圾,这将解释每次运行时颜色的变化。

要看看是否真的如此,请尝试将你的阵列零启动 - 如下所示:

Uint32 colors[3] = {0};

现在,如果你运行你的程序并发现颜色不再变化(它可能只是黑色,因为颜色现在包含所有零) - 你知道这时有什么问题。