2012-04-17 135 views
0
glDeleteTextures(total, &Item::texture[0]); 
glGenTextures(total, &Item::texture[0]); 

迭代所有图像,总数;OpenGL更改/重新加载纹理

glBindTexture(GL_TEXTURE_2D, Item::texture[i]); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits()); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

尝试重新加载纹理,但它没有。纹理保持不变,保持不变。任何想法如何可以/应该处理?为了清晰起见,我试图用新的纹理重新加载纹理,最好不要改变纹理的数量(因为可能会有很多变化)。

我正在使用Qt,C++。上面的代码在一个独立的GLwidget中是一个静态函数。

+0

有趣的是,您总是删除索引为0的纹理,并在同一个索引(0)处生成一个新的纹理,但是您将索引'i'处的纹理绑定在一起。某些东西闻起来很有趣.. – karlphillip 2012-04-17 17:40:19

+0

@karlphillip'total'是纹理的计数,第二个参数是数组的开始指针。但是为什么只是在数据发生变化时一次又一次地删除和重新创建纹理? – 2012-04-17 17:44:58

+0

嗯..你可能是对的,要检查一下。 – RobotRock 2012-04-17 17:45:08

回答

3

当你进行这些调用时,你有可能被绑定到错误的渲染上下文或根本没有渲染上下文?