我已经开始将旧项目移植到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);
我该如何解决?