Возможно ли создать текстуру в функции из GLSurfaceRenderer
в OpenGL ES 2.0? Например, код, который я использовал, показан ниже.Создание текстуры в функции отображения в OpenGL ES 2.0
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, MyTexture);
int[] mNewTexture = new int[weight * height * 4];
for(int ii = 0; ii < weight * height; ii = ii + 4){
mNewTexture[ii] = 127;
mNewTexture[ii+1] = 127;
mNewTexture[ii+2] = 127;
mNewTexture[ii+3] = 127;
}
IntBuffer texBuffer = IntBuffer.wrap(mNewTexture);
GLES20.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, weight, height, 0, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, texBuffer);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
pmF.drawSelf(MyTexture);
А в коде класс pmF
используется для отображения экрана с помощью текстуры. Я заметил, что этот фрагмент кода выполнен. Но результат не отображается на экране.
Спасибо. Но мне интересно, можно ли использовать этот метод для перезаписи текстуры? Например, если переменная bReloadWood в вашем коде будет установлена true во второй раз, будет ли исходная память удалена? – Timothy
Да, 'bReloadWood' может быть изменен много раз, и память будет удалена. У меня не было никаких проблем с моим подходом. Сначала удалите текстуру, затем загрузите вместо нее другую. – keaukraine
Большое спасибо. Я попытаюсь использовать этот метод. – Timothy