如何统一单一的统一组件?

时间:2014-10-20 12:36:18

标签: opengl haskell shader

我想设置一个GLfloat统一值(所以在C API中glUniform1f)。
我正在浏览here上的Uniform模块的文档页面,似乎没有办法做到这一点。

我有点期待UniformComponent a => Uniform a的实例,但没有。{ 这似乎非常明显(特别是因为类型UniformComponent的函数被隐藏了),那么这是不好的做法?我错过了什么吗?还是真的被忽视了,我必须使用原始绑定?

1 个答案:

答案 0 :(得分:1)

现在我正在使用原始绑定 因此,如果真的被忽略了,可以从Graphics.Rendering.OpenGL.Raw导入您需要的内容,然后您将获得包装的C API。
你可以找到各种统一的制定者here

我的用法如下:

UniformLocation tLoc <- get $ uniformLocation shaderProgram "t"
glUniform1f tLoc tValue

这不是最好的解决方案,因为它是原始的 - 你失去了一些抽象(UniformLocation)和ad-hoc多态(没有类型类,所以你使用像在C中那样的函数名后缀)。