В моей системе возникает та же проблема (как для линий, так и для других примитивов), и использование конструктора Pixel
напрямую вместо mapRGB
дает правильные цвета.
Например, если я импортирую Graphics.UI.SDL.Color
как SDLC
, а затем let white' = SDLC.Pixel maxBound
, я получаю белую линию, как и ожидалось. С SDLC.Pixel 4278190335
(или 255 * 2^24 + 255
, разумным значением для красного) я получаю красную линию.
Это явно не реальное решение или ответ, но оно может предложить некоторые отправные точки.
Еще одна странная вещь: если я напечатаю ваш белый и мой, вот так:
print =<< SDL.getRGBA white (SDL.surfaceGetPixelFormat surf0)
print =<< SDL.getRGBA white' (SDL.surfaceGetPixelFormat surf0)
print white
print white'
Я получаю это:
(255,255,255,255)
(255,255,255,255)
Pixel 16777215
Pixel 4294967295
Таким образом, они выглядят одинаково через getRGBA
, но фактические значения Pixel
отличаются.