Creo que este problema se debe a como funcionan el rasterizador.
En OpenGL (y es posible que en DirectX sea parecido) es mas o menos asi: un pixel se considera que es "rellenado" por una primitiva (linea, triangulo, quad) si la primitiva incluye el punto central del pixel. El punto central del pixel es el que tiene cordenadas enteras, en tu caso, por ejemplo, seria (0,50). El pixel se puede ver como una area cuadrada centrada en este punto. Al "rasterizar" una linea de (0,0) a (0,50) le estas indicando una linea que va desde el punto central del pixel (0,0) al punto central del pixel (0,50) pero sin llegar a incluir el punto central. Esto produce que el ultimo pixel no se rellene (al no estar incluido su punto central). Si sumas una pequeña cantidad a la coordenadas del punto final (no hace falta que sea tanto como 1.0f sino con 0.25f o 0.35f deberia valer) entonces si se rellena el ultimo pixels.
Creo recordar que lei algo de esto en la ayuda de DirectX, sobre como funcionaba el rasterizador... espera dejame que lo busque... aqui este un link a la MSDN:
Rasterization Rules
Como dice en el link esta regla se llama "top-left filling convention" y tiene sentido para poder "encadenar" varias primitivas, empezando una donde acaba la anterior sin rellenar los pixeles comunes dos veces
En OpenGL (y es posible que en DirectX sea parecido) es mas o menos asi: un pixel se considera que es "rellenado" por una primitiva (linea, triangulo, quad) si la primitiva incluye el punto central del pixel. El punto central del pixel es el que tiene cordenadas enteras, en tu caso, por ejemplo, seria (0,50). El pixel se puede ver como una area cuadrada centrada en este punto. Al "rasterizar" una linea de (0,0) a (0,50) le estas indicando una linea que va desde el punto central del pixel (0,0) al punto central del pixel (0,50) pero sin llegar a incluir el punto central. Esto produce que el ultimo pixel no se rellene (al no estar incluido su punto central). Si sumas una pequeña cantidad a la coordenadas del punto final (no hace falta que sea tanto como 1.0f sino con 0.25f o 0.35f deberia valer) entonces si se rellena el ultimo pixels.
Creo recordar que lei algo de esto en la ayuda de DirectX, sobre como funcionaba el rasterizador... espera dejame que lo busque... aqui este un link a la MSDN:
Rasterization Rules
Como dice en el link esta regla se llama "top-left filling convention" y tiene sentido para poder "encadenar" varias primitivas, empezando una donde acaba la anterior sin rellenar los pixeles comunes dos veces