Вторник, 26 Ноября 2024, 13:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
SpriteBatch
HuntlierДата: Понедельник, 18 Марта 2013, 23:59 | Сообщение # 1
был не раз
Сейчас нет на сайте
Можно ли менять в процессе отрисовки параметры, передаваемые при вызове Begin()?

Допустим вызвал
Код
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, null, null, null, camera.get_transformation(GraphicsDevice));


А после требуется изменить BlendState с AlphaBlend на Additive. Но не вызывая End(), а потом заново Begin() уже с другими параметрами... Изменять переменную напрямую не получилось, может есть какой нибудь метод? Или всё же придётся вызывать два раза?
PocifikДата: Вторник, 19 Марта 2013, 00:15 | Сообщение # 2
участник
Сейчас нет на сайте
ну
Код

BlendState blendState = BlendState.AlphaBlend;
spriteBatch.Begin(SpriteSortMode.Deferred, blendState, SamplerState.PointWrap, null, null, null, camera.get_transformation(GraphicsDevice));
...
blendState = BlendState.Additive;

Должно работать
HuntlierДата: Вторник, 19 Марта 2013, 00:26 | Сообщение # 3
был не раз
Сейчас нет на сайте
Pocifik, я конечно проверю, но это было бы очень странно, создать внешнюю переменную, передать её методу, а потом изменить, spriteBatch то это не поймёт, ему же мы потом ничего не передаём.

Добавлено (19.03.2013, 00:26)
---------------------------------------------
Конечно же не сработало, глупо было даже проверять.

AmriДата: Вторник, 19 Марта 2013, 02:56 | Сообщение # 4
Auriss IGD
Сейчас нет на сайте
Huntlier, слушай, попробуй переключатель поставить. Суть такая : как у Pocifik, но, после срабатывания чего-то там, переменная меняет значение. А прошлое значение стирай, если оно не надо. Только придется делать цикл...
PocifikДата: Вторник, 19 Марта 2013, 04:11 | Сообщение # 5
участник
Сейчас нет на сайте
Huntlier, кажется я просто не правильно тебя понял, то что тебе надо сделать - невозможно, ведь метод только один раз вызывается, на него ничто ни повлияет (я так думаю). Не могу понять почему бы просто не использовать End() и заново Begin(), обычно так и делают?
AmriДата: Вторник, 19 Марта 2013, 04:15 | Сообщение # 6
Auriss IGD
Сейчас нет на сайте
Цитата (Pocifik)
Не могу понять почему бы просто не использовать End() и заново Begin(), обычно так и делают?

нет, так не надо делать. Потому что все придется отрисовывать заново. Количество кода удвоится.
HuntlierДата: Четверг, 28 Марта 2013, 16:06 | Сообщение # 7
был не раз
Сейчас нет на сайте
Понятно, видимо способа всё же нет...как раз таки мне и нужно менять переменную, чтобы не вызывать 2 раза SpriteBatch.Begin(), но по видимому этого никак не сделать, хотя я думаю это всё же возможно, только не на уровне SpriteBatch и на более низком

Сообщение отредактировал Huntlier - Четверг, 28 Марта 2013, 16:08
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг