Артефакт FrameBuffer при уменьшении окна Libgdx? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Артефакт FrameBuffer при уменьшении окна Libgdx? [закрыто]

Сообщение Anonymous »

При уменьшении окна меньше исходного размера окна приложения, определенного в Lwjgl3Launcher, появляются странные артефакты.
В конце функции рендеринга я рисую в FrameBuffer и удаляю некоторые части конечного изображения, которые не следует отображать с помощью растрового изображения, а затем рисовать полученную текстуру.
Пока это работает нормально, но когда я уменьшаю размер окна до более низкого разрешения, тогда то, что изначально было определено в Lwjgl3Launcher в функции getDefaultConfiguration(), в этой текстуре появляются артефакты.
configuration.setWindowedMode(800, 600);

Это мой код в конце функции рендеринга (EDIT: это мой полный метод рендеринга):
ScreenUtils.clear(0f, 0f, 0f, 1f);

frameBuffer.begin();

Pixmap fg = Pixmap.createFromFrameBuffer(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
frameBuffer.end();

fg.setBlending(Pixmap.Blending.None);
// fg.setColor(new Color(0,0,0,0));
// fg.fill();
fg.setColor(Color.RED);
fg.fillRectangle(0, 0, fg.getWidth(), 10);
fg.fillRectangle(0, 0, 10, fg.getHeight());
fg.fillRectangle(0, fg.getHeight() - 10, fg.getWidth(), fg.getHeight() - 10);
fg.fillRectangle(fg.getWidth() - 10, 0, 10, fg.getHeight());

Texture fboTex = new Texture(fg);

batch.begin();
batch.setProjectionMatrix(cameraMenu.combined);
batch.draw(fboTex, 0, 0, fboTex.getWidth(), fboTex.getHeight(), 0, 0, 1, 1);
batch.end();

fboTex.dispose();
fg.dispose();

РЕДАКТИРОВАТЬ: Если я запустил этот код без начала/окончания FrameBuffer, артефакты не появятся. Но тогда я бы в основном манипулировал всем экраном, а не только объектами, которые я визуализировал в фреймбуфер.
В методе изменения размера я всегда устанавливаю размер FrameBuffer равным текущему размеру окна, следуя изображение, как оно отображается на экране:
Изображение артефакта текстуры
РЕДАКТИРОВАТЬ: для моей цели мне нужно визуализировать эти объекты в специальный FrameBuffer, потому что в противном случае я отобрать/удалить весь экран, а не только планеты.
С FB: правильно обрезать планеты
Без FB: весь экран обрезается
Без FB: весь экран обрезается
p>
Я делаю что-то не так, когда создаю новый FrameBuffer правильного размера в методе изменения размера?
if (frameBuffer != null) {
frameBuffer.dispose();
}

frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, width, height, false);


Подробнее здесь: https://stackoverflow.com/questions/793 ... gdx-window
Ответить

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

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

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

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

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