Проверьте ключ вниз в OpenGL Haskell - PullRequest
0 голосов
/ 20 ноября 2018

Я довольно новичок в Haskell и пытаюсь создать небольшую игру в свободное время.

Этот урок отлично объясняет, как он работает, и я могуполучить все это работает гладко.Однако всякий раз, когда они заставляют вещи двигаться в этом примере, они манипулируют всем окном просмотра.

То, что я хочу для своей игры, - это изменение данных, отображаемых при нажатии клавиши.

Вместоэто:

main :: IO ()
main = do
  (_progName, _args) <- getArgsAndInitialize
  _window <- createWindow "Hello World"
  displayCallback $= display
  reshapeCallback $= Just reshape
  keyboardMouseCallback $= Just keyboardMouse
  mainLoop

Я пытался:

import Graphics.UI.GLUT

main :: IO ()
main = do
  (_progName, _args) <- getArgsAndInitialize
  _window <- createWindow "Hello World"
  go [(1,1,1),(0.5,0.5,0.5)] -- Initial state
  mainLoop

go points = do
  displayCallback $= (display points) -- Parse points to draw lines between
  keyboardMouseCallback $= Just keyboardMouse
  return ()
    where
        keyboardMouse _key _state _modifiers _position = go ((0,0,0):points) 
        -- Defined here so I can reference 'go'

display :: [(GLfloat,GLfloat,GLfloat)] -> DisplayCallback
display points = do 
  clear [ColorBuffer]
  renderPrimitive Lines $
     mapM_ (\(x, y, z) -> vertex $ Vertex3 x y z) points
  flush

Однако, он рисует только первую линию.Он не перерисовывается, когда я нажимаю клавишу.Итак, представьте, что я сопоставляю нажатую клавишу, и оттуда я определяю, какую точку добавить в список точек.Могу ли я заставить это работать здесь, я смогу реализовать его в своей игре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...