1
我使用Haskell的OpenGL.Raw庫,我想使用GLboolean值真假,但他們似乎並不在圖書館預定義。我如何自己定義這些值?什麼是表示真假的GL布爾值?
我使用Haskell的OpenGL.Raw庫,我想使用GLboolean值真假,但他們似乎並不在圖書館預定義。我如何自己定義這些值?什麼是表示真假的GL布爾值?
在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庫爲你做包裝,這也帶來了一些類型安全和一個接口,可能會更好一點。