我昨天开始学习 SDL 库,经过一番阅读和询问,做了一个非常简单的程序,当左键按下时绘制一个块。
问题是当鼠标快速移动时它会跳过点,所以你会得到一堆正方形而不是一条线,下面的截图显示了一条线以正常速度移动鼠标,另一条快速移动鼠标:

是什么导致它跳过所有这些点?
这是代码:
//keep the window open
while(running){
    //handle events
    while(SDL_PollEvent(&event)){
        switch(event.type){ 
            case SDL_MOUSEBUTTONDOWN:
                //left button down draws black block
                if(event.button.button == SDL_BUTTON_LEFT) boxColor = black;
                //right button "erases" a point
                else
                  if(event.button.button == SDL_BUTTON_RIGHT) boxColor = blue;
                //middle button clears the screen
                else {
                    clearScreen(display,blue);
                    break;
                }
                //where to draw
                drawing = 1;
                boxRect.x = event.button.x - BOX_WIDTH / 2;
                boxRect.y = event.button.y - BOX_HEIGHT / 2;
            break;
            case SDL_MOUSEMOTION:
                //keep drawing if the button is pressed
                if(drawing == 1){
                    boxRect.x = event.motion.x - BOX_WIDTH / 2;
                    boxRect.y = event.motion.y - BOX_HEIGHT / 2;
                }
            break;
            //stop drawing when the button is no longer pressed
            case SDL_MOUSEBUTTONUP:
                drawing = 0;
            break;
            //quit if window closing button is pressed
            case SDL_QUIT:
                running = 0;
            break;
        }
    }
    //draw
    if(drawing == 1){
        SDL_FillRect(display,&boxRect,boxColor);
        SDL_Flip(display);
    }
}