Here is my own test. Interestingly, the color of the non-aligned pixel is from the previous line, not the current one. The whole width of the line (including the non-aligned pixel) is correct (here 51px)
Zoom:
Code:
#include <SDL2/SDL.h>
int main()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window * window = SDL_CreateWindow("SDL2 Line Drawing",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 500, 500, 0);
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
SDL_SetRenderDrawBlendMode (renderer, SDL_BLENDMODE_BLEND);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 10, 10, 255, 255);
SDL_RenderDrawLine(renderer, 200, 200, 250, 200); // OK
SDL_RenderDrawLine(renderer, 250, 210, 200, 210); // NOT OK
SDL_RenderDrawLine(renderer, 200, 180, 200, 150); // OK
SDL_RenderDrawLine(renderer, 250, 150, 250, 180); // OK
SDL_SetRenderDrawColor(renderer, 255, 10, 10, 255);
SDL_RenderDrawLine(renderer, 200, 300, 250, 300); // NOT OK
SDL_RenderDrawLine(renderer, 250, 310, 200, 310); // NOT OK
SDL_SetRenderDrawColor(renderer, 10, 255, 10, 255);
SDL_RenderDrawLine(renderer, 200, 400, 250, 400); // NOT OK
SDL_RenderDrawLine(renderer, 250, 410, 200, 410); // NOT OK
SDL_RenderPresent(renderer);
SDL_Delay(10000);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
/*
gcc line.c -lSDL2 -lSDL2main -o line
*/