2012-07-28 103 views

回答

1

在OpenGL庫用於此的兩個功能是

marshalGLboolean :: Num a => Bool -> a 
marshalGLboolean x = fromIntegral $ case x of 
    False -> gl_FALSE 
    True -> gl_TRUE 

unmarshalGLboolean :: (Eq a, Num a) => a -> Bool 
unmarshalGLboolean = (/= fromIntegral gl_FALSE) 

GLBoolean是民類型類的一個實例(內部模塊GLBoolean中),但你需要正常Bool值在每一個地方轉換你使用OpenGL函數。如果你不希望它在每一個地方轉換,那麼你可以使用下面的

gTrue, gFalse :: Num a => a 
gTrue = fromIntegral gl_TRUE 
gFalse = fromIntegral gl_FALSE 

但缺點是,你不能用正常的布爾運算像&&||。 或者你可以讓OpenGL庫爲你做包裝,這也帶來了一些類型安全和一個接口,可能會更好一點。

相關問題