在 OpenGL 中设置统一

Setting uniform in OpenGL

我有一件形式的制服:

uniform float abc;

我在 Haskell 代码中得到它:

abc <- GL.get (GL.uniformLocation program "abc")

如何向它传递 GLfloat 值?

我从 here 中看到我可能应该使用 uniform1,但该模块未导出该函数。

每隔一个实例:

instance UniformComponent a => Uniform (Vertex2 a)
instance UniformComponent a => Uniform (Vertex3 a)
instance UniformComponent a => Uniform (Vertex4 a)
instance UniformComponent a => Uniform (TexCoord1 a)
instance UniformComponent a => Uniform (TexCoord2 a)
instance UniformComponent a => Uniform (TexCoord3 a)
instance UniformComponent a => Uniform (TexCoord4 a)
instance UniformComponent a => Uniform (Normal3 a)
instance UniformComponent a => Uniform (FogCoord1 a)
instance UniformComponent a => Uniform (Color3 a)
instance UniformComponent a => Uniform (Color4 a)
instance UniformComponent a => Uniform (Index1 a)

似乎没有涵盖这个简单的案例。

我能做什么?

显然 it's a known bug 在 API.

目前一个可能的替代方法是使用 Index1 重载,它应该是一个颜色索引,但可以很好地处理简单的浮点数。