2013-08-30 5 views
0

Я сделал небольшую функцию, которая выполняет итерацию по строке и помещает новые текстурные координаты в буфер в соответствии с координатами каждого символа в текстуре шрифта 256x256, поэтому я могу отобразить текст с помощью Вершинные массивы OpenGL.Текстура Android OpenGL-ES отображается испорченной

private void updateTexCoords() 
    { 
     float unit = 0.0625f; 
     byte[] arr = string.getBytes(); 
     for(int i = 0; i < string.length()*8; i += 8) 
     { 
      float x = (float)(((int)arr[i/8] & 0xff)%16)*unit; 
      float y = (float)(((int)arr[i/8] & 0xff)/16)*unit; 
      //axis center is at (0,1) pointing right, down 
      texture[0+i] = x; texture[1+i] = y+unit; //bottom left 
      texture[2+i] = x; texture[3+i] = y; //top left 
      texture[4+i] = x+unit; texture[5+i] = y+unit; //bottom right 
      texture[6+i] = x+unit; texture[7+i] = y; //top right 
     } 
     ByteBuffer byteBuffer = ByteBuffer.allocateDirect(texture.length * 4); 
     byteBuffer.order(ByteOrder.nativeOrder()); 
     textureBuffer = byteBuffer.asFloatBuffer(); 
     textureBuffer.put(texture); 
     textureBuffer.position(0); 
    } 

Он отлично работает для всех устройств, протестированных за исключением одного старого телефона, HTC Nexus One, , где он показывает перепутался символы, хотя есть шаблон и вы видите, что в основном координаты текстуры даны ему в как-то неправильно. Что может вызвать такую ​​проблему на одном конкретном устройстве, особенно при работе на Java и не возиться с родными аппаратными вещами?

ответ

1

Некоторые Android-устройства просто имеют неподходящие драйверы OpenGL ES. У HTC могут быть обновленные драйверы. Какой тип GPU? Если он правильно работает с эмуляцией AVD, то ваш код, вероятно, прекрасен.

Если вы используете отбрасывание задней поверхности, я также попытаюсь изменить направление обмотки, которое будет выбрано.

+0

Все изображения, за исключением текста, отображаются правильно. Даже те, у которых есть пользовательские координаты текстуры (а не стандартные 0f и 1f). –

Смежные вопросы