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

时间:2015-03-28 12:11:29

标签: opengl haskell textures shader

我正在阅读纹理时使用TextureObjects。我读了两个纹理,想要在它们之间动态切换,但是当我尝试时:

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

然后

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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