首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向Haskell的着色器发送统一矩阵?

如何向Haskell的着色器发送统一矩阵?
EN

Stack Overflow用户
提问于 2015-03-14 23:00:46
回答 2查看 502关注 0票数 1

试图从本质上做矩阵乘法,在阴影中的顶点上进行变换,但是它没有。

目前,我有这样的想法:

代码语言:javascript
复制
curMatrix <- get ((matrix $ Just $ Modelview 0)::StateVar(GLmatrix GLfloat))
       mc <- getMatrixComponents ColumnMajor curMatrix
setUniform p "uModelViewMatrix" mc 

setUniform是GLUtil包中的一个函数。是否需要将数组转换为Vec4 (Vec4),还是有其他方法?

谢谢!

编辑:

我最终还是这么做了:

代码语言:javascript
复制
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:我所说的不起作用的意思是,我把它设置为一个统一的变量,但是现在我的对象消失了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-16 15:36:23

开始工作了!它不起作用的主要原因是我没有使用投影矩阵。

请不要用棍子打我的坏/令人困惑的变量名称。

代码语言:javascript
复制
    mvMatrix <- get ((matrix $ Just $ Modelview 0)::StateVar(GLmatrix GLfloat))
    pMatrix <- get ((matrix $ Just Projection)::StateVar(GLmatrix GLfloat))
    mv <- getMatrixComponents ColumnMajor mvMatrix
    pm <-   getMatrixComponents ColumnMajor pMatrix
    let mvm = getMat mv
    let pM = getMat pm 
    let mvmp = mvm !*! pM
    setUniform p "uModelViewMatrix" mvmp

我的getMat函数如下:

代码语言:javascript
复制
getMat :: [GLfloat] -> V4 (V4 GLfloat)
getMat (a11:a12:a13:a14: 
            a21:a22:a23:a24:
            a31:a32:a33:a34:
            a41:a42:a43:a44:_) = V4 (V4 a11 a12 a13 a14)
             (V4 a21 a22 a23 a24)
             (V4 a31 a32 a33 a34)
             (V4 a41 a42 a43 a44)

我用的是线性包装。!*!插值函数是矩阵乘法。

这就像我想要的那样,太好了!希望它能帮到其他人!

票数 0
EN

Stack Overflow用户

发布于 2015-03-15 03:14:56

Haskell的OpenGL绑定(当前为2.11.1.0)不公开统一矩阵值的函数。在bug跟踪器上已经多次报告了这一点:

尽管如此,如果您有一个满足Storable类型实例的数据类型,例如来自埃克米特/线性M44 Float类型,则只需使用指向正确的OpenGLRaw绑定调用的原始指针即可。见这里的一个例子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29055257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档