在 Haskell 中使用多个纹理进行着色器编程

Using multiple textures for shader programming in Haskell

我目前在读取纹理时使用 TextureObjects。我读入了两个纹理,并想在它们之间动态切换,但是当我尝试这样做时:

tUnit =(\(TextureObject x) -> x) texObj

然后

activeTexture $= (TextureUnit tUnit)
setUniform p "texUnit" (TextureUnit tUnit)

它不起作用,但如果我将 tUnit 替换为 0,它会起作用,但它会使用我加载的最后一个纹理绘制所有内容。

我正在使用 GLUtil 的 readTexture 函数加载我的纹理。

有什么想法吗?

TextureUnit 是局部着色器 ID,TextureObject 是全局纹理 ID。在设置活动纹理之前我没有再次绑定我的 TextureObject,所以它只是使用最新的绑定。