Попытка сделать по существу матричное умножение на вершины в шейдерах для преобразований, и это, ну, не имея этого.Как отправить однородную матрицу в шейдер в Haskell?
На данный момент у меня есть это:
curMatrix <- get ((matrix $ Just $ Modelview 0)::StateVar(GLmatrix GLfloat))
mc <- getMatrixComponents ColumnMajor curMatrix
setUniform p "uModelViewMatrix" mc
setUniform является функцией в пакете GLUtil. Мне нужно преобразовать свой массив в Vec4 (Vec4), или есть другой способ?
Спасибо!
Edit:
я в конечном итоге делает это:
getMat :: [GLfloat] -> [V4 GLfloat]
getMat (a11:a12:a13:a14:
a21:a22:a23:a24:
a31:a32:a33:a34:
a41:a42:a43:a44:_) = [(V4 a11 a12 a13 a14),
(V4 a21 a22 a23 a24),
(V4 a31 a32 a33 a34),
(V4 a41 a42 a43 a44)]
А ну, хорошо, что, кажется, не работали!
Редактировать 2: То, что я подразумеваю под этим, не работает, я получил его, чтобы установить его как единую переменную, но теперь мой объект исчез!
Думаю, вы переносите матрицу. GL хочет большую колонку. – Dan
Я определяю столбцы, когда получаю компоненты матрицы, не так ли? – Gentatsu