SDL_RenderDrawRect错过了一个像素

我已经开始将旧项目移植到SDL2和C语言,并注意到了奇怪的问题。矩形缺少像素。 线与矩形相交时也存在类似问题。行尾上方的矩形像素也丢失了。

OS:Arch Linux

初始化代码

//Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
    printf( "SDL could not initialize! SDL Error: %s\n",SDL_GetError() );
    success = false;
}
else
{
    //Set texture filtering to linear
    if( !SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY,"1" ) )
    {
        printf( "Warning: Linear texture filtering not enabled!" );
    }

    //Create window
    graphics.gWindow = SDL_CreateWindow( "SDL Tutorial",SDL_WINDOWPOS_UNDEFINED,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_SHOWN );
    if( graphics.gWindow == NULL )
    {
        printf( "Window could not be created! SDL Error: %s\n",SDL_GetError() );
        success = false;
    }
    else
    {
        //Create renderer for window
        graphics.gRenderer = SDL_CreateRenderer( graphics.gWindow,-1,SDL_RENDERER_accELERATED );
        if( graphics.gRenderer == NULL )
        {
            printf( "Renderer could not be created! SDL Error: %s\n",SDL_GetError() );
            success = false;
        }
    }
}

绘制这些形状的代码如下。

SDL_SetRenderDrawColor(graphics.gRenderer,0x00,0x00);
SDL_RenderClear(graphics.gRenderer);

SDL_Color color = { 51,255,255 };
graphics_Rectangle(400 - 2,2,(400 + MAXX + 1) - 400 - 2,4 + MAXY + 3 - 2,color);

SDL_Color color2 = { 0,127,255 }; // setcolor(green);
graphics_Rectangle(40*10+BEGX+1-2,20*10+BEGY+1-2,40*10+BEGX+9+2 - 40*10+BEGX+1-2,20*10+BEGY+9+2 - 20*10+BEGY+1-2,color2);
graphics_Line(40*10+BEGX+1-44,20*10+BEGY+1+5,40*10+BEGX+1-2,20*10+BEGY+1+5);

SDL_Color colorLine = { 0,255 };
graphics_Line(40*10+BEGX+1-44,colorLine);

我该如何解决?

xunyanli 回答:SDL_RenderDrawRect错过了一个像素

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2991381.html

大家都在问