我需要在运行时更新纹理,我的代码是:

    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 ) );
}


那应该理清。尽管实际上从不建议这样做,因为它会在同一实例中创建另一个对象,但是对吧?

10-05 23:11