libgdx Вырезание образа

Я уже некоторое время пытаюсь "вырезать" образ, объясню почему и что пробовал. Итак, я хотел создать «полосу» hp, за исключением того, что это не полоса, а сердце, и поэтому я, хотя это было бы легко, все, что мне нужно было сделать, это нарисовать две картинки друг над другом, а затем просто вырезать одну, чтобы сделать это вроде как в хп пропадал, но я так и не смог найти способ вырезать образ.

  • Установка высоты просто изменяет размер изображения, как вы могли догадаться.
  • Я пытался использовать textureRegion, чтобы взломать его, но это не очень хорошо.
  • Я нашел метод под названием clip begin, в котором также используются ножницы, но по какой-то причине он не работает.

Возможно, я неправильно использую начало клипа, но я не могу найти никакой реальной документации по нему, все, что я делаю, это:

image.clipBegin(x,y,height,weight);
image.clipEnd();

Я чуть не забыл, я использую изображение scene2d, возможно, это лучший способ обойти его, но не уверен, что это будет.

Я был бы признателен за любые идеи о том, как это сделать, спасибо.


person Musbah    schedule 18.06.2014    source источник


Ответы (1)


Вы хотите использовать поддержку OpenGL Scissor, предоставляемую Libgdx. См. вики Libgdx Clipping и документация по Libgdx ScissorStack.

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

Важный момент, который следует помнить при работе с ножничным стеком, заключается в том, что он применяется только к реальным командам рисования, которые выдаются. Поскольку большинство API-интерфейсов пытаются объединить команды рисования, это означает, что фактическое рисование может не произойти, когда кажется, что оно должно произойти. Чтобы обеспечить отсечение, вы должны сбросить все буферизованные отрисовки перед нажатием на ножницы (иначе неправильная вещь может быть обрезана), и вы должны сбросить все вызовы отрисовки перед тем, как вытолкнуть ножницы (иначе то, что вы хотите отрезать, может избежать ножниц).

См. libgdx ScissorStack не работает должным образом или libGDX - Как обрезать или Как рисовать только часть экрана с помощью SpriteBatch в libgdx? или Заставить группу скрывать актеров за ее пределами.

person P.T.    schedule 18.06.2014