每次运行应用程序时,颜色都会改变,显示如下
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有关,但不知道要将其更改为什么。
答案 0 :(得分:1)
我正在添加此评论作为建议的答案。
当您致电SDL_FillRect
时,您的颜色数组可能未使用您的预期值进行初始化。当发生这种情况时,颜色将具有任何随机垃圾,这将解释每次运行时颜色的变化。
要看看是否真的如此,请尝试将你的阵列零启动 - 如下所示:
Uint32 colors[3] = {0};
现在,如果你运行你的程序并发现颜色不再变化(它可能只是黑色,因为颜色现在包含所有零) - 你知道这时有什么问题。