Haskell Android OpenGL

15

我一直在使用Ajhc在OpenGL中跟踪我的二维对象时遇到了问题。

我不知道如何跟踪我的对象并防止它离开设备的宽度和高度。有人能提供帮助吗?

我的代码如下:

module Draw where
import CubeVerts
import CoSys
import AndroidNdk
import AndroidNdk.Log

import Foreign.Marshal.Array

spriteMv :: Float -> Float -> Float -> Float -> Float -> IO ()
spriteMv x y dx dy z = do
    drawFunc

drawFunc :: IO ()
drawFunc = do
    c_glDrawArrays c_GL_TRIANGLES 0 6

spritePlayer :: Float -> Float -> Float -> Float -> Float -> IO ()
spritePlayer x y dx dy z = do
    withArray vertices $ λvp -> withArray colors $ λcp -> do
    c_glEnableClientState c_GL_VERTEX_ARRAY
    c_glEnableClientState c_GL_COLOR_ARRAY
    c_glVertexPointer 3 c_GL_FLOAT 0 vp
    c_glColorPointer 4 c_GL_FLOAT 0 cp

    spriteMv x y dx dy z

    c_glDisableClientState c_GL_VERTEX_ARRAY
    c_glDisableClientState c_GL_COLOR_ARRAY

3
我可能没有解决你问题的方法,但我认为Haskell能在Android上运行非常棒。 - Max Worg
我猜你是指ajhc,ahjc只是一个打字错误吧? - Ruud Helderman
是的,你是正确的。 - Archxiao
1个回答

2
我的Haskell和OpenGL经验不是在Android上的,而且已经有几年了。
创建一个IORef。你需要保存对象的位置并从回调函数中检索它。请参阅Sven Panitz的Haskell/OpenGL教程第5章:HOpenGL

1
非常感谢,朋友。花了将近一年的时间才得到答案。 - Archxiao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接