我需要在运行时更新纹理,我的代码是:
public void updateTexture(Bitmap bmp) {
mTexture = new Texture( ImageHelper.bitmapToPixmap( bmp ) );
}
但这是行不通的。有人可以帮我吗?
谢谢
更新
public void render(PerspectiveCamera camera) {
mTexture.bind();
mShaderProgram.begin();
mShaderProgram.setUniformMatrix("u_worldView", camera.combined );
mShaderProgram.setUniformi("u_texture", 0);
mMesh.render(mShaderProgram, GL20.GL_TRIANGLES);
mShaderProgram.end();
}
新问题
我在所有对象上都得到了第一个旧纹理。
最佳答案
你的问题是你在打电话
mTexture.disose();
释放该对象,然后尝试为其分配另一个对象。这将永远行不通。
您可以做的是:
public void updateTexture(Bitmap bmp) {
mTexture = new Texture( ImageHelper.bitmapToPixmap( bmp ) );
}
那应该理清。尽管实际上从不建议这样做,因为它会在同一实例中创建另一个对象,但是对吧?