在OpenGL中设置统一变量

4

我有一个制服,其格式如下:

uniform float abc;

而我在Haskell代码中得到它的方式如下:

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

我该如何将 GLfloat 值传递给它?

这里可以看到,我应该使用 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)

似乎没有涵盖这个简单的情况。

我该怎么办?


哎呀,看起来是API的一个bug。报告它,现在我猜只能把你的uniform改成向量并且只使用一个分量了 :-( - luqui
1
@luqui 噢,显然已经有人报告了(https://github.com/haskell-opengl/OpenGL/issues/64)。 - Shoe
1个回答

3

显然,API中存在一个已知的错误(链接)

现在可能的替代方法是使用Index1重载,它应该是颜色索引,但对于简单的浮点数也可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接