Ответ 1
(мой опыт работы с Haskell и OpenGL не на Android, и мне несколько лет).
Создайте IORef
.
Вам нужно сохранить позицию объекта и получить его из ваших обратных вызовов. См. Главу 5 учебника Sven Panitz Haskell/OpenGL: HOpenGL
У меня возникли проблемы с отслеживанием моих 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
(мой опыт работы с Haskell и OpenGL не на Android, и мне несколько лет).
Создайте IORef
.
Вам нужно сохранить позицию объекта и получить его из ваших обратных вызовов. См. Главу 5 учебника Sven Panitz Haskell/OpenGL: HOpenGL