1

私は Haskell の OpenGL.Raw ライブラリを使用しており、true と false に GLboolean 値を使用したいのですが、ライブラリで事前定義されていないようです。これらの値を自分で定義するにはどうすればよいですか?

4

1 に答える 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 に答える