繁体   English   中英

为什么SDL2窗口逐渐消失?

[英]Why is SDL2 window fading out?

我想快速解决此问题:

我编写了一个简单的程序来使用SDL2库。 青色框沿蓝色背景从左向右移动。 然后窗口关闭。

问题是程序运行时窗口的颜色“淡出”。 对比度明显降低,这很烦人。 有时会在框位于窗口中间时发生。 有时,当框到达窗口的右侧时会发生这种情况。 有时根本不会发生。 颜色的这种褪色似乎是零星的和随机的。 这是一个运行时问题。 从理论上讲,我认为代码没有任何问题。 怎么了?

#include "SDL.h"
#include <stdio.h>

#ifdef __cplusplus
  extern "C"
#endif
int main(int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window*   window = NULL;
    SDL_Renderer* renderer = NULL;

    window = SDL_CreateWindow("Boxes", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, 0);
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

    SDL_Rect myBox = { 200, 150, 50, 50  };

    int go = 0;
    while (go <= 590) {
      myBox.x = go;

      SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);

      SDL_RenderClear(renderer);

      SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255);

      SDL_RenderFillRect(renderer, &myBox);

      SDL_RenderPresent(renderer);

      if (go == 0)
        SDL_Delay(2000);

      SDL_Delay(100);

      go += 10;
    }

    SDL_Delay(2000);

    SDL_DestroyWindow(window);
    SDL_DestroyRenderer(renderer);

    SDL_Quit();

    return EXIT_SUCCESS;
}

这就是它的外观。

颜色淡出!

这是一个经典的SDL错误。

您不处理窗口收到的事件,因此您的操作系统假设您的程序已挂起。

while循环中,添加以下内容:

SDL_Event e;
while (SDL_PollEvent(&e))
    if (e.type == SDL_QUIT)
        return 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM