Увидеть какое -то заикание, даже когда я перемещаю простое изображениеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Увидеть какое -то заикание, даже когда я перемещаю простое изображение

Сообщение Anonymous »

Недавно я начал разрабатывать игру с использованием Libgdx, потому что с его встроенной природой OpenGL я подумал, что могу ожидать лучшего рендеринга, чем то, что я получаю из игр, построенных в библиотеке Java. < /p>
Однако я сразу столкнулся с проблемой. Я проверил перемещение изображения логотипа Badlogic по умолчанию, а затем заметил, что его движение не совсем плавное. Это не ужасно задержка или что -то в этом роде, но я определенно могу видеть какое -то тонкое заикание каждый часто часто. < /P>
Вот мой код: < /p>

Код: Выделить всё

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.ScreenUtils;

public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture img;
Vector2 pos;
float speed;

@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
pos = new Vector2();
speed = 300f;
}

@Override
public void render () {

float deltaTime = Gdx.graphics.getDeltaTime();
//System.out.println("deltaTime:"+deltaTime);

if(Gdx.input.isKeyPressed(Input.Keys.LEFT)){
pos.x -= deltaTime * speed;
}
if(Gdx.input.isKeyPressed(Input.Keys.RIGHT)){
pos.x += deltaTime * speed;
}

ScreenUtils.clear(1, 0, 0, 1);
batch.begin();
batch.draw(img, pos.x, pos.y);
batch.end();
}

@Override
public void dispose () {
batch.dispose();
img.dispose();
}
}
Как я переместил логотип:
  • Получить разницу времени в методе рендеринга с помощью:
    float deltaTime = Gdx.graphics.getDeltaTime();
  • На основе ввода клавиш (ВЛЕВО/ВПРАВО) умножьте deltaTime на значение скорости и прибавьте к значению x логотипа;
    Розыгрыш логотип основан на обновленном x.
Изображение

Это все, что я сделал. Я также попробовал добавить фиксированное значение (pos.x += 5f;) без использования дельты времени, но результат был тот же. Я все еще мог видеть небольшие заикания в его движении.
Затем я распечатал deltaTime в каждом цикле и кое-что заметил.
Изображение

Как видно из изображения, длина каждого кадра равна около 0,0167 до 0.0183.
Это подводит меня к двум вопросам:
  • FPS проекта установлен на 60, поэтому каждый кадр должен быть 1/60 = 0,0166. ... второй. Таким образом, каждый кадр занимает немного больше времени, чем предполагалось.
  • Возможно, это более важно, но... разница составляет примерно 0,0015 секунды (0,0167 – 0,0183). между кадрами, и я подозреваю, что это может быть причиной заиканий.
Для справки, вот что я получаю из игрового цикла того, что я построил по умолчанию. Java-библиотека (Thread, System.nanoTime и т. д.)
Изображение

В этом случае каждый кадр занимает от 0,0166665 до 0,166668, поэтому разница составляет около 0,0000003, что намного меньше, чем LibGDX 0,0015. И изображение движется более плавно с помощью этого игрового цикла.
Я не совсем уверен, является ли это причиной заиканий или на это есть другие факторы, но я пытаюсь это выяснить. run — довольно простая программа, поэтому я немного запутался. Как я сказал вначале, главной привлекательностью LibGDX для меня была лучшая производительность рендеринга, но я этого не понимаю.
Я что-то упускаю? Если не считать этой проблемы, мне очень нравится LibGDX, поэтому я надеюсь решить ее и продолжить разработку с ее помощью.

Подробнее здесь: https://stackoverflow.com/questions/793 ... mple-image
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Наблюдаю некоторое заикание даже при перемещении простого изображения.
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Заикание изображения в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Почему мой пользовательский компонент Swing перерисовывается быстрее, когда я перемещаю мышь?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Pyqtgraph выдает ошибку каждый раз, когда я перемещаю курсор над ним
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Pyqtgraph выдает ошибку каждый раз, когда я перемещаю курсор над ним
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»