2012-06-06 4 views
0

Я пытался перенести свою предыдущую игру с C# на Java. Мне интересно, как я могу создавать графические слои, на которых я могу рисовать плитки.Как создать слои с помощью LWJGL?

+0

Я думал о создании массива плитки сетки, но это, похоже, не получится. – KeyHeart

+1

Можете ли вы уточнить, что вы хотели бы сделать (снимок экрана?). OpenGL на самом деле не имеет понятия «слой». – Tim

+0

Я создаю игру на основе плитки, и я хотел создать слои, чтобы рисовать поверх других слоев. Пример: Нарисуйте дерево на верхнем слое и нанесите траву на слой ниже. – KeyHeart

ответ

0

Помимо буфера глубины, буфера цвета и буфера трафарета можно использовать объект буфера кадров (FBO) http://www.songho.ca/opengl/gl_fbo.html.

Его можно использовать в качестве адресата рисования, например, чтобы сделать зеркало, которое вы сначала визуализировали зеркальную точку зрения на некоторую временную текстуру, а затем вы визуализируете зеркало с этой текстурой, так же, как вы можете сделать текстуру для каждого чтобы вы могли нарисовать именно тот слой, который вам нужен, и в конце визуализировать все слои на разных высотах (или то, что вы хотите с ними делать).

Или, как Тим прокомментировал просто, когда вы хотите нарисовать что-то на слое 'n', вы визуализируете его на высоте z = n, но таким образом у вас не будет изображения физического слоя, но все они объединены, поэтому, если вам понадобятся они для некоторые после обработки изображений (специальные эффекты на разных слоях) или сохранение их в качестве изображений, которые вы должны использовать FBO. Но в некоторых случаях вы можете применять разные шейдеры при рисовании на другом слое.

FBO сложнее использовать, но очень мощный инструмент.

0

Для меня лучше всего работает (в 2D-играх):

  • Z-буфер: первая установка Z-буфер и при рисовании вы определяете каждый раз, когда значение Z, и это его (но терпит неудачу в половинных прозрачных объектах)
  • зная порядок рисования: рисуем низкий слой первого, верхний слой последнего (медленнее, чем г-Buffer)
Смежные вопросы