Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android opengl es 2.0中更新位图绑定了哪些文本?_Android_Opengl Es - Fatal编程技术网

如何在android opengl es 2.0中更新位图绑定了哪些文本?

如何在android opengl es 2.0中更新位图绑定了哪些文本?,android,opengl-es,Android,Opengl Es,我一直在请求纹理id,它已经被显示,但现在我想更新已经显示的内容,例如 private void initTexture(){ int-textureIds[]=新的int[1]; // 启用纹理 GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glGenTextures(1,textureIds,0); // 将绑定纹理(t未来[0]表示指针指向纹理数据的初始位置) mTextureID=textureID[0]; } public voi

我一直在请求纹理id,它已经被显示,但现在我想更新已经显示的内容,例如
private void initTexture(){
int-textureIds[]=新的int[1];
// 启用纹理
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glGenTextures(1,textureIds,0);
// 将绑定纹理(t未来[0]表示指针指向纹理数据的初始位置)
mTextureID=textureID[0];
}

public void freshTexture(){
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
            GLES20.GL_NEAREST);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,
            GLES20.GL_NEAREST);
    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D,0,mLayerDrawable.getBitmap(),0);
    onFreshView();

}
protected void doDraw() {
    GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT|GLES20.GL_COLOR_BUFFER_BIT);
    GLES20.glClearColor(163,156,158,255);
    mGL20Factory.useProgram();
    MatrixState.setInitStack();
    MatrixState.transtate(mScreenPosition.getMoveX(mMoveX),mScreenPosition.getMoveY(mMoveY),0);
    MatrixState.scale(mScale,mScale,0);
    //将最终变换矩阵传入shader程序
    GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, MatrixState.getFinalMatrixMM(), 0);
    GLES20.glEnable(GLES20.GL_TEXTURE_2D);
    GLES20.glVertexAttribPointer(mAttribPosition, 3, GLES20.GL_FLOAT, false, 0, mVerticeBuf);
    GLES20.glVertexAttribPointer(mAttribTexCoord, 2, GLES20.GL_FLOAT, false, 0, mTextureCoodBuf);

    GLES20.glEnableVertexAttribArray(mAttribPosition);
    GLES20.glEnableVertexAttribArray(mAttribTexCoord);

    //绑定纹理
    GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID);

    GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);

    GLES20.glDisableVertexAttribArray(mAttribPosition);
    GLES20.glDisableVertexAttribArray(mAttribTexCoord);
}

另一种方法是,我使用GLUtils.texSubImage2D()方法,但没有使用它,

从何处调用
freshTexture()
?确保代码在渲染线程中执行。例如,请参阅。非常感谢。它很有用。您在何处调用
freshTexture()
from?确保代码在渲染线程中执行。例如,请参阅。非常感谢。这很有用。