2014-02-04 4 views
1

Я хочу использовать Framebuffer s в моей маленькой игре libgdx.Размер FrameBuffer в libgdx

В игре используется scene2d, и я модифицирую камеру Stage s, чтобы использовать окно просмотра шириной 50 и 31 высотой. Затем я установил матрицу проекций SpriteBatch в camera.combined. Для этого у меня есть независимая от разрешения игра, и я могу использовать свой собственный «WorldUnit» вместо использования пикселей.

Но теперь, если я создаю FrameBuffer, я должен дать ему размер. Должен ли я придать ему размер окна просмотра камер или размер экрана в пикселях?

И, когда мне делают вещи, что FrameBuffer, я могу сделать их в WorldUnits, что означает оказание на P(25,16) почти в середине игрового окна?

Благодаря

+0

Итак, я использую те же значения, что и для обычного рендеринга? Спасибо – Springrbua

ответ

2

Сво height и width рамы, которая должна быть отшлифованной. Таким образом, это должна быть высота и ширина видового экрана, если вы не делаете с ней что-то фанатичное. (Так же, как на этапе, например)

Просто не забудьте добавить setSize из FBO в метод изменения размера вашей сцены Scene2D.

Взгляните на код отсюда: Shader fireeffect. он действительно использует FBO.

+0

Итак, я использую (Pseudocode) 'framebuffer = new FrameBuffer (pixmapFormat, camera.viewPort.width, camera.viewPort.height, hasDepth);'? И тогда я могу снова использовать один и тот же spritebatch или мне нужно использовать другой для рендеринга frambuffer? – Springrbua

+0

Да. но, как я сказал, взгляните на пример из учебника shadert. Все есть то, что вам нужно знать. При изменении размера: 'fbo = new FrameBuffer (Format.RGBA8888, width, height, false);' Может быть, не использовать новое все время, но его пример. – BennX

+0

Я уже видел этот учебник, и я хочу сделать то же самое (lightmap without box2d lights), но они также используют шейдеры, и я смотрю, чтобы делать это без шейдеров. благодаря – Springrbua