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 |
|
| |