Unten finden Sie einen Code, um SDL mit Haskell zu verwenden, um eine diagonale Linie zu zeichnen. Ich bekomme eine CYAN-Zeile, wenn das RGB eindeutig weiß sein sollte. Dies ist auf Ubuntu. Mache ich etwas falsch?Warum ist diese Haskell SDL Linie Cyan, wenn sie weiß sein sollte?
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
Ist es immer noch mit einer vertikalen Linie passieren, und mit dem ganzen Bildschirm zu malen? Nur ein Plausibilitätscheck, um sicherzustellen, dass kein verrücktes Anti-Aliasing stattfindet oder so. – luqui
ist das kein Problem mit Big-Little-Endian? Sie legen den Alphakanal nicht so fest 255 255 255 0 wird 0 255 255 255 (wenn Sie die Byte-Reihenfolge umkehren)? – mb14
mb14: NEIN. Die Verwendung von mapRGB und die Verwendung von 255 255 255 255 macht dasselbe. – qrest