c - SDL_RenderDrawRect 少了一个像素
问题描述
我已经开始将我的旧项目移植到 SDL2 和 C 语言并注意到奇怪的问题。矩形缺少一个像素。当线穿过矩形时也有类似的问题。线条一端上方的矩形像素也丢失了。
操作系统: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, 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, 0x00, 0x00);
SDL_RenderClear(graphics.gRenderer);
SDL_Color color = { 51, 255, 255, 255 };
graphics_Rectangle(400 - 2, 2, (400 + MAXX + 1) - 400 - 2, 4 + MAXY + 3 - 2, color);
SDL_Color color2 = { 0, 127, 0, 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, 0, 255 };
graphics_Line(40*10+BEGX+1-44, 20*10+BEGY+1+5, 40*10+BEGX+1-2, 20*10+BEGY+1+5, colorLine);
我如何解决它?
解决方案
推荐阅读
- javascript - 根据 Firestore 中的开始日期和结束日期查询创建的字段,即时间戳
- excel - 从其他工作表中添加形状中的文本
- git - 主分支无法使用 Git 从远程拉取
- android - 应用程序图标在 OS 9 设备上不支持
- mysql - 如何使用 GROUPBY mysql 查询优化 COUNT?
- python-3.x - 列表到元组列表RGB python
- mysql - 如何将一个表与一对多表组合成一个记录结果
- python - Django 应用程序和 Python 包依赖项
- android - BLE 制造商广告数据
- java - 使用 maven 创建的 JAR,资源直接放置在 JAR 中