c++ - BPP 颜色变化 SDL

标签 c++ sdl

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

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

然后我做

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

颜色变量信息:

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 有关,但不确定将其更改为什么。

最佳答案

我按照建议将此评论添加为答案。

当您调用 SDL_FillRect 时,您的颜色数组可能未使用您期望的值进行初始化。当发生这种情况时,颜色将包含其中的任何随机垃圾,这可以解释每次运行时颜色的变化。

要查看是否确实如此,请尝试像这样直接对数组进行零初始化:

Uint32 colors[3] = {0};

现在,如果您运行您的程序并发现颜色不再变化(它可能只是黑色,因为颜色现在包含全零)——您知道此时出了什么问题。

关于c++ - BPP 颜色变化 SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948835/

相关文章:

c++ - 仍然给我一个重复的 vector

c - fscanf 正在崩溃程序

xcode - SDL2.0 与 XCode 4.6

无法在 VS 2019 上以 Release模式为 SDL 库构建解决方案

c++ std::thread 构造函数用法

c++ - 找出哪个进程对 USB 设备句柄具有独占锁

c++ - 什么时候用简单的话用extern "C"?

c++ - CMake + 库达 : compile cpp files in Cuda-mode (--x=cu)

c++ - 在 Visual Studio 2013 下编译 SDL 2.0.0/2.0.1 源代码时出现问题