Poniżej znajduje się kod do używania SDL z Haskellem do narysowania ukośnej linii. Dostaję linię CYAN, kiedy RGB wyraźnie powinno być białe. To jest na Ubuntu. czy robię coś źle?Dlaczego ta linia Haskell SDL jest niebieskozielona, gdy powinna być biała?
import qualified Graphics.UI.SDL as SDL
import qualified Graphics.UI.SDL.Primitives as SDLP
main = do
SDL.init [SDL.InitEverything]
SDL.setVideoMode 640 480 32 []
SDL.setCaption "My Window" "My Test"
surf0 <- SDL.getVideoSurface
white <- SDL.mapRGB (SDL.surfaceGetPixelFormat surf0) 255 255 255
SDLP.line surf0 0 0 640 480 white
SDL.flip surf0
eventLoop
SDL.quit
print "done"
where
eventLoop = SDL.waitEventBlocking >>= checkEvent
checkEvent (SDL.KeyUp _) = return()
checkEvent _ = eventLoop
Czy to jeszcze zdarzyć z pionową linią, a wraz z malowaniem cały ekran? Tylko sprawdzanie poczytalności, aby upewnić się, że szalone anty-aliasing nie dzieje się, czy coś. – luqui
czy to nie problem z dużymi małymi endianami? Nie ustawiasz kanału alfa, aby 255 255 255 0 stało się 0 255 255 255 (jeśli odwrócisz kolejność bajtów)? – mb14
mb14: NIE. Używanie mapRGB i użycie 255 255 255 255 robi to samo. – qrest