opengl - 在 OpenGL 中设置统一

标签 opengl haskell glsl

我有一套形式的制服:

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 重载,它应该是颜色索引,但对于简单的浮点效果很好。

关于opengl - 在 OpenGL 中设置统一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450186/

相关文章:

haskell - 在 Nat 类型上定义自定义类型系列

c# - OpenGL 函数 ChangeDisplaySettings (C++) 替代

linux - 为 Linux 构建 3D 窗口管理器

交换每个水平对绘制的 OpenGL 像素

haskell - 永远的单子(monad)是如何工作的?

haskell - STUArray s i e - 仅当 i == Int 时空间泄漏?

c++ - 翻页效果

opengl - GLSL 着色器 : occlusion order and culling

javascript - 使用 webgl 在鼠标移动上创建一个连续动画回到原始状态的涂抹/液化效果

opengl - 使用 texelFetch() 进行纹理化