Я опробовал libgdx в качестве оболочки opengl, и у меня возникли некоторые проблемы с графическим рендерингом: по какой-то причине все изображения (текстуры) на устройстве Android выглядят немного размытыми при использовании libgdx.это также включает в себя текст (шрифт).
для текста, я подумал, что это потому, что я использую растровые шрифты, но я не могу найти альтернативу - я обнаружил, что есть библиотека под названием "gdx-stb-truetype", но яне могу найти как его скачать и использовать.
для обычных изображений, даже когда я показываю все изображение без масштабирования, я ожидаю, что оно будет выглядеть таким же четким, как и на экране компьютера, особенно если у меня такой хороший экран на устройстве (этогалактика нексус).Я попытался отключить сглаживание, используя следующий код:
final AndroidApplicationConfiguration androidApplicationConfiguration=new AndroidApplicationConfiguration();
androidApplicationConfiguration.numSamples=0; //tried the value of 1 too.
...
Я также попытался установить метод масштабирования для различных методов, но безуспешно.пример:
texture.setFilter(TextureFilter.Nearest,TextureFilter.Nearest);
в качестве теста, я нашел четкое изображение, точно такое же, как и видимое разрешение на устройстве (720x1184 для galaxy nexus, из-за панели кнопок), и я 'Поместите это на фоне приложения libgdx.конечно, мне пришлось добавить дополнительное пустое пространство для загрузки текста, поэтому окончательный размер изображения (который будет включать содержимое и пустое пространство) все еще является степенью 2 как для ширины, так и для высоты (1024x2048 в этомдело) .в настольном приложении это выглядит нормально.на устройстве это выглядело размытым.
странная вещь, которую я заметил, это то, что когда я меняю ориентацию устройства (горизонтальную <=> вертикальную), за очень короткое время до запуска вращающейся анимации, яочень хорошо видеть и изображение, и текст.
конечно, libgdx может справиться с этим, поскольку часть opengl проекта api-тестов android показывает изображения очень хорошо.
Может кто-нибудь помочь мне?
@ user1130529:я использую spritebatch.Кроме того, вот что я делаю для настройки области просмотра.это происходит независимо от того, выбрал ли я соотношение сторон или нет.
public static final int VIRTUAL_WIDTH =720;
public static final int VIRTUAL_HEIGHT =1280-96;
private static final float ASPECT_RATIO =(float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT;
...
@Override
public void resize(final int width,final int height)
{
// calculate new viewport
if(!KEEP_ASPECT_RATIO)
{
_viewport=new Rectangle(0,0,Gdx.app.getGraphics().getWidth(),Gdx.app.getGraphics().getHeight());
Gdx.app.log("DEBUG","size:"+_viewport);
return;
}
final float currentAspectRatio=(float)width/(float)height;
float scale=1f;
final Vector2 crop=new Vector2(0f,0f);
if(currentAspectRatio>ASPECT_RATIO)
{
scale=(float)height/(float)VIRTUAL_HEIGHT;
crop.x=(width-VIRTUAL_WIDTH*scale)/2f;
}
else if(currentAspectRatio<ASPECT_RATIO)
{
scale=(float)width/(float)VIRTUAL_WIDTH;
crop.y=(height-VIRTUAL_HEIGHT*scale)/2f;
}
else scale=(float)width/(float)VIRTUAL_WIDTH;
final float w=VIRTUAL_WIDTH*scale;
final float h=VIRTUAL_HEIGHT*scale;
_viewport=new Rectangle(crop.x,crop.y,w,h);
Gdx.app.log("DEBUG","viewport:"+_viewport+" originalSize:"+VIRTUAL_WIDTH+","+VIRTUAL_HEIGHT+" aspectRatio:"+ASPECT_RATIO+" currentAspectRatio:"+currentAspectRatio);
}