Я сделал небольшую функцию, которая выполняет итерацию по строке и помещает новые текстурные координаты в буфер в соответствии с координатами каждого символа в текстуре шрифта 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 и не возиться с родными аппаратными вещами?
Все изображения, за исключением текста, отображаются правильно. Даже те, у которых есть пользовательские координаты текстуры (а не стандартные 0f и 1f). –