私は Haskell の OpenGL.Raw ライブラリを使用しており、true と false に GLboolean 値を使用したいのですが、ライブラリで事前定義されていないようです。これらの値を自分で定義するにはどうすればよいですか?
質問する
2018 次
1 に答える
1
OpenGL ライブラリでこれに使用される 2 つの関数は (内部モジュール GLBoolean で)
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
は Num 型クラスのインスタンスですがBool
、OpenGL 関数を使用するすべての場所で通常の値を変換する必要があります。すべての場所で変換したくない場合は、次を使用できます
gTrue, gFalse :: Num a => a
gTrue = fromIntegral gl_TRUE
gFalse = fromIntegral gl_FALSE
&&
ただし、欠点は、や などの通常のブール演算を使用できないことです||
。または、OpenGL ライブラリーにラッピングを任せることもできます。これにより、タイプセーフとインターフェースが少し改善されます。
于 2012-07-28T13:19:30.277 に答える