Dưới đây là một số mã để sử dụng SDL với Haskell để vẽ một đường chéo. Tôi nhận được một dòng CYAN khi RGB rõ ràng nên có màu trắng. Đây là trên Ubuntu. Tôi có làm điều gì sai?Tại sao dòng Haskell SDL màu lục lam này lại có màu trắng?
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
Liệu nó vẫn xảy ra với một đường thẳng đứng, và với sơn toàn bộ màn hình? Chỉ cần kiểm tra sanity để chắc chắn rằng một số anti-aliasing điên không xảy ra hay gì đó. – luqui
là không phải là một vấn đề với endian lớn nhỏ? Bạn không đặt kênh alpha để 255 255 255 0 trở thành 0 255 255 255 (nếu bạn đảo ngược thứ tự byte)? – mb14
mb14: KHÔNG. Sử dụng mapRGB và sử dụng 255 255 255 255 cũng làm như vậy. – qrest