Haskell Android OpenGL

У меня возникли проблемы с отслеживанием моих 2-мерных объектов в OpenGL с помощью Ajhc.

Я не знаю, как я могу отслеживать свой объект и не позволять ему оставлять ширину и высоту устройства. Может ли кто-нибудь оказать помощь?

Мой код здесь:

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

Ответы

Ответ 1

(мой опыт работы с Haskell и OpenGL не на Android, и мне несколько лет).

Создайте IORef. Вам нужно сохранить позицию объекта и получить его из ваших обратных вызовов. См. Главу 5 учебника Sven Panitz Haskell/OpenGL: HOpenGL