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