Как нарисовать пакет спрайтов без цвета?

Я рисую Texture2D вот так

//background_texture is white in color
spritebatch.Draw(content.Load<Texture2D>("background_texture"), 
     new Rectangle(10, 10, 100, 100),
     Color.Red)

Текстура белая; однако на экране он отображается красным.

Почему для метода рисования требуется Color?
Как можно просто нарисовать текстуру, и только текстуру, без Color.something, искажающего графику?


person cblupo    schedule 22.07.2014    source источник


Ответы (3)


взгляните на документацию здесь: http://msdn.microsoft.com/en-us/library/ff433986.aspx

вы хотите попробовать Color.White, этот дополнительный параметр цвета обычно относится к оттенку, в то время как белый «оттенок» должен отображать спрайт без оттенка

person Joe    schedule 22.07.2014
comment
Нуждаться в тонировке, на мой взгляд, глупо. Почему бы просто не использовать другой метод перегрузки без параметра Color, чтобы у нас были некоторые варианты здесь, что за ненужный Color.white? А если бы кто-то захотел белый оттенок? Но все равно спасибо - person cblupo; 22.07.2014
comment
Как вы думаете, что такое белый оттенок? - person Cole Campbell; 22.07.2014

Color.White необязателен, потому что в шейдере спрайтов по умолчанию он выглядит так:

Пиксельшейдер.... { ....

вернуть Текстура * Цвет; }

Где цвет - это цвет, который задается из шейдера вершин, определенного этим цветом в spritebatch.Draw... если бы он был нулевым, черным, он создавал бы невидимые спрайты. Суть в том, что этим вы устанавливаете цвет вершины каждой вершины, которая используется в качестве мультипликативной для текстуры, которую вы установили для спрайта.

person user3821985    schedule 27.03.2015

Color.White не меняет цвет вашего изображения. Использовать

spritebatch.Draw(content.Load<Texture2D>("background_texture"), 
 new Rectangle(10, 10, 100, 100),
 Color.White);

Вместо Color.Red, который применяет оттенок.
Примечание. Будьте осторожны. Intellisense захочет сделать это Color.Wheat, поэтому не забудьте ввести первые 3 буквы, прежде чем нажмете пробел.

person Daniel G    schedule 20.03.2016