在Haskell中将double转换为GLfloat

Lui*_*rez 3 opengl double haskell floating-point-conversion

我想将Double转换为GLfloat.我想用它来进行比较.

xM <- newIORef 0.0
zM <- newIORef 0.0
mobs <- newIORef []
mapM_ (\x -> colision x xM) mobs
Run Code Online (Sandbox Code Playgroud)

暴徒充满了一种方法.

colision mob xC = do
  xcama <- get xC
  --zcama <- get zC
  let menor = mob!!0
  let mayor = mob!!7
  --if xm>= xmin && xm <= xmax && zm >= zmin && zm <= zmax  then renderText (1, (-1.4)) $ "Dead"
  --else renderText (1, (-1.4)) $ "Warning..."
  renderText (1, (-1.4)) $ "Warning..."
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时显示我的错误:

"无法匹配类型'Foreign.C.Types.CDouble'和'Foreign.C.Types.CFloat'预期类型:GLfloat

实际类型:GLdouble

- - -解: - - -

我用这个代码:

import GHC.Float
  d2f = realToFrac :: GLdouble -> GLfloat
Run Code Online (Sandbox Code Playgroud)

Ørj*_*sen 8

用于在不同浮点类型(以及其他一些类型)之间进行转换的一般函数RationalrealToFrac.