Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 3,684
· Новый пользователь: headron
Последние фото
Эх, чуть не проспал закрытие.
Эх, чуть не проспал ...
Альбом: XNA Engine

GB
GB
Альбом: XNA Engine

South Park Coon & Friends
South Park Coon & Fr...
Альбом: XNA Games

Блоги
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
dampirik
» Реклама,статистик...
Chort
» XNA и StartCoroutine
Chort
» Curve Class
dampirik
» Реклама, статисти...
dampirik
» Увеличение скорос...
dampirik
» Реклама, статисти...
general
» Распаковка DxtCom...
general
» Как работать с XN...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Статистика посещений:

Просмотр темы
 Распечатать тему
Загрузка текстур
YuraGurzgyy
#1 Распечатать сообщение
Опубликовано 10.01.2013 11:06:27
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

Люди как можно загрузить текстуру из папки (без компиляции) так чтобы она имела такое же качество как и скомпилированная из контента. Когда я гружу через Texture2D.FromStream() то грузятся одни цвета а когда с контента то совсем другие, например красный цвет: фром стрим грузит 131 а контент 31. Но это вообще не получается предугадать, то отличаются на 100 а бывает и 120 и т.п.
Я заметил что из контента можно грузить такие же цвета как и из папки если убрать обработчик контента.
Изменил(а) YuraGurzgyy, 10.01.2013 11:07:31
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
PhilippOK
#2 Распечатать сообщение
Опубликовано 10.01.2013 12:02:46
Аватар пользователя

Старший специалист


Сообщений: 201
Зарегистрирован: 22.05.12

какой формат текстуры?
чтобы читать из стрима надо jpg или png
Загрузить источник  GeSHi: C#
  1. var t = Content.Load<Texture2D>("texture");
  2. var tb = new byte[t.Width*t.Height*4];
  3. t.GetData(tb);
  4.  
  5. var fss = new FileStream((@"D:\texture.jpg"), FileMode.Open);
  6. var tt = Texture2D.FromStream(GraphicsDevice, fss);
  7. var tb2 = new byte[tt.Width * tt.Height * 4];
  8. tt.GetData(tb2);
Добавлено за 0.006 секунд, используя GeSHi 1.0.8.2

все совпадает
Изменил(а) PhilippOK, 10.01.2013 12:03:02
 
PhilippOK
#3 Распечатать сообщение
Опубликовано 10.01.2013 12:22:04
Аватар пользователя

Старший специалист


Сообщений: 201
Зарегистрирован: 22.05.12

Чутка подправил код чтобы проще было дебагать
Загрузить источник  GeSHi: C#
  1.  
  2. using (var fss = new FileStream((@"D:\texture.jpg"), FileMode.Open))
  3. {
  4. var t = Content.Load<Texture2D>("texture");
  5. var tb = new byte[t.Width * t.Height * 4];
  6. t.GetData(tb);
  7.  
  8. var tt = Texture2D.FromStream(GraphicsDevice, fss);
  9. var tb2 = new byte[tt.Width*tt.Height*4];
  10. tt.GetData(tb2);
  11. var isEqual = true;
  12. int notEqual = 0;
  13. for (int i = 0; i < tb.Length; i++ )
  14. {
  15. var v1 = tb[i];
  16. var v2 = tb2[i];
  17. var dif = Math.Abs(v1 - v2);
  18. if (dif > 3)
  19. {
  20. isEqual = false;
  21. notEqual++;
  22. }
  23. }
  24. Console.WriteLine(isEqual);
  25. Console.WriteLine(notEqual);
  26. }
Добавлено за 0.009 секунд, используя GeSHi 1.0.8.2

И того, что мы имеем: при пароге 3 и выше у меня с текстурой уветного гауссовского шума все совпадает полностью
Для того чтобы совпадало учитываем что надо:
В текстурном процессоре ColorKeyEnable установить в false
 
YuraGurzgyy
#4 Распечатать сообщение
Опубликовано 10.01.2013 14:53:00
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

Текстура PNG, проблема в том что она имеет прозрачность, когда я гружу её через FromStream то во время отрисовки с параметром BlendState.AlphaBlend края текстуры где есть прозрачность становятся белыми, а если включить BlendState.Additive то вся текстура становится белой. Точнее не совсем белой но близкой к белому цвету. А если включить BlendState.NonPremultiplied то края текстуры становятся тёмными аж до черного цвета.
При этом таких проблем нет при загрузке из контента (Уже заранее скомпилированного с обработкой Frameworkом).
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
Chort
#5 Распечатать сообщение
Опубликовано 10.01.2013 18:00:48
Аватар пользователя

Администратор


Сообщений: 1296
Зарегистрирован: 16.02.09

А какие параметры используются экспорте текстуры? TextureProcessor обробляет текстуры, Texture2D.FromStream грузит оригинал.
+ помним что прозрачность в большинстве случаев задаєтся только альфа-каналом, но цветовые компоненты не меняются (то-есть если игнорировать альфу, там будет "мусор"Wink.
На вопросы отвечаю с головы. Ссылка на ответы или запускаю студию только в интересных случаях.
 
YuraGurzgyy
#6 Распечатать сообщение
Опубликовано 10.01.2013 18:31:24
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

Если классное качество то обработчик стоит "Текстура — XNA Framework" (Стандартно), если нужна не красивая то нужно просто поставить "Обработка не требуется".
Интересно какая разница между текстурой и оригиналом? я заметил только разность в цветовых компонентах (при этом альфа не меняется).
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
za5
#7 Распечатать сообщение
Опубликовано 10.01.2013 19:38:18
Старший специалист


Сообщений: 402
Зарегистрирован: 13.08.11

вот, кстати, не замечал. интересный вопрос если это так.
попробуй поиграться с параметрами samplerstate, и с фильтрациями текстур. и с другими параметрами samplerstate'а
Загрузить источник  GeSHi: C#
  1. Texture2D t;
  2.  
  3. SamplerState ss = new SamplerState();
  4. ss.Filter = TextureFilter.
  5. t.GraphicsDevice.SamplerStates[0] = ss;
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.2

Изменил(а) za5, 10.01.2013 19:39:36
http://www.x-graph.ru/
http://www.cyberforum.ru/xna/
 
YuraGurzgyy
#8 Распечатать сообщение
Опубликовано 10.01.2013 19:46:42
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

У меня была проблема не только в том что текстура не красиво рисовалась а в том что текстуры с альфой при компиляции создают большие xnb бинарники, и это существенно влияет на вес игры, а хочется сэкономить.
Я нашел решение: Я компилирую текстуру в контенте после чего загружаю её, и пересохраняю скомпилированные байты в новый бинарник (мой), после чего сжимаю свой бинарник с помощью GZip, и получается бинарная текстурка такого же размера как и png;
Чтобы превратить бинарник в текстуру я открываю поток GZip к файлу, после чего считываю первые 8 байт которые содержат размеры текстуры, а после чего все компоненты всех цветов.
Потом просто делаю Texture.SetData<Color>() и текстура имеет такое же качество как и скомпилированная в контенте, но при этом какая экономия. Например текстура размером 700x400 имеет приблизительно размер 26 кб, после компиляции размер получается 1100 кб (компиляция в контенте), но если сделать свой сжатый бинарник то опять получаем где-то 26 кб.
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
za5
#9 Распечатать сообщение
Опубликовано 10.01.2013 19:57:02
Старший специалист


Сообщений: 402
Зарегистрирован: 13.08.11

да, есть много вариантов сжатия, свой, в св-вах проекта контента, в св-вах файла(заложено системой)

если что то проверь ещё то, что выше я написал, есть некоторая уверененность, что разница в качесве при загрузках в т.ч. fromstream именно в samplerstate'ах
Изменил(а) za5, 10.01.2013 19:59:25
http://www.x-graph.ru/
http://www.cyberforum.ru/xna/
 
general
#10 Распечатать сообщение
Опубликовано 10.01.2013 21:41:46
Аватар пользователя

Администратор сайта


Сообщений: 3788
Зарегистрирован: 10.02.09

IMCO написал:
У меня была проблема не только в том что текстура не красиво рисовалась а в том что текстуры с альфой при компиляции создают большие xnb бинарники, и это существенно влияет на вес игры, а хочется сэкономить.
Я нашел решение: Я компилирую текстуру в контенте после чего загружаю её, и пересохраняю скомпилированные байты в новый бинарник (мой), после чего сжимаю свой бинарник с помощью GZip, и получается бинарная текстурка такого же размера как и png;
Чтобы превратить бинарник в текстуру я открываю поток GZip к файлу, после чего считываю первые 8 байт которые содержат размеры текстуры, а после чего все компоненты всех цветов.
Потом просто делаю Texture.SetData<Color>() и текстура имеет такое же качество как и скомпилированная в контенте, но при этом какая экономия. Например текстура размером 700x400 имеет приблизительно размер 26 кб, после компиляции размер получается 1100 кб (компиляция в контенте), но если сделать свой сжатый бинарник то опять получаем где-то 26 кб.


тогда ищи проблему с искажением цветов у себя.
[dreamteam-mobile]
[dtimofeev.blogspot.com][c#][XNA][blog]
 
YuraGurzgyy
#11 Распечатать сообщение
Опубликовано 10.01.2013 22:27:33
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

И ещё, кто знает как проверить точно сколько времени выполняется участок кода под wp7 device ?
Просто раньше под виндой я юзал Stopwatch но на телефоне его нет, есть какие нить альтернативы?
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
beaver
#12 Распечатать сообщение
Опубликовано 11.01.2013 00:53:59
Аватар пользователя

Администратор


Сообщений: 1772
Зарегистрирован: 22.02.09

Профайлеры, вестимо. Есть встроенный в студию Windows Phone Performance Analysis.
 
za5
#13 Распечатать сообщение
Опубликовано 11.01.2013 08:09:00
Старший специалист


Сообщений: 402
Зарегистрирован: 13.08.11

ещё часто мерят с помощью datetime.now
http://www.x-graph.ru/
http://www.cyberforum.ru/xna/
 
PhilippOK
#14 Распечатать сообщение
Опубликовано 11.01.2013 10:09:57
Аватар пользователя

Старший специалист


Сообщений: 201
Зарегистрирован: 22.05.12

Проблема у вас в том, что вы хотите сделать массив байт [4 байта на канал] из PNG текстуры которая НЕ ИМЕЕТ альфа канала! PNG это pemultiply alpha формат! поэтому и разные данные. Если хотите создавать свой формат хранения (ну например как вы сказали получается byte[] с GZip сжатием), то изначальна оригинальная текстура должа быть 32 Bit, т.е все каналы должны лежать отдельно.
Советую исходную текстуру сохранить как TGA 32Bit., затем из TGA сделать массив байт и потом уже грузить его!
Загрузить источник  GeSHi: C#
  1.  
  2. //Global
  3. private Texture2D t0;
  4. private Texture2D t1;
  5. //В load
  6. //using (var fss = new FileStream((@"D:\texture.tga"), FileMode.Open))
  7. using (var fss = new FileStream((@"D:\texture.png"), FileMode.Open))
  8. {
  9. //Меняем тут в контенте png или tga
  10. t0 = Content.Load<Texture2D>("texture");
  11. var tb = new byte[t0.Width * t0.Height * 4];
  12. t0.GetData(tb);
  13.  
  14. t1 = Texture2D.FromStream(GraphicsDevice, fss);
  15. var tb2 = new byte[t1.Width * t1.Height * 4];
  16. t1.GetData(tb2);
  17. var isEqual = true;
  18. int notEqual = 0;
  19. for (int i = 0; i < tb.Length; i++)
  20. {
  21. var v1 = tb[i];
  22. var v2 = tb2[i];
  23. var dif = Math.Abs(v1 - v2);
  24. if (dif > 3)
  25. {
  26. isEqual = false;
  27. notEqual++;
  28. }
  29. }
  30. //Если png isEqual == false если tga, то isEqual == true
  31. Console.WriteLine(isEqual);
  32. Console.WriteLine(notEqual);
  33. }
  34. //В draw
  35. spriteBatch.Begin();
  36. //Если мы использовали TGA - все OK если PNG - потеряли прозрачность
  37. spriteBatch.Draw(InputHelper.Keyboard.IsKeyDown(Keys.Space) ? t0 : t1, DisplayManager.ScreenRectangle, Color.White);
  38. spriteBatch.End();
  39.  
Добавлено за 0.011 секунд, используя GeSHi 1.0.8.2

Изменил(а) PhilippOK, 11.01.2013 10:18:18
 
za5
#15 Распечатать сообщение
Опубликовано 11.01.2013 10:30:31
Старший специалист


Сообщений: 402
Зарегистрирован: 13.08.11

В общем, тема не раскрыта. я огорчён. Одни голословные заявления.

IMCO, выложи сюда текстуру в которой, как ты говоришь, цвет по разному отображается при загрузке.
Изменил(а) za5, 11.01.2013 10:32:45
http://www.x-graph.ru/
http://www.cyberforum.ru/xna/
 
YuraGurzgyy
#16 Распечатать сообщение
Опубликовано 12.01.2013 02:47:49
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

za5 написал:
IMCO, выложи сюда текстуру в которой, как ты говоришь, цвет по разному отображается при загрузке.

Можно взять любую текстуру.
Если хочешь сравни, посмотри на цифры, загрузи через Content и через FromStream.
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
PhilippOK
#17 Распечатать сообщение
Опубликовано 12.01.2013 21:20:34
Аватар пользователя

Старший специалист


Сообщений: 201
Зарегистрирован: 22.05.12

IMCO написал:
za5 написал:
IMCO, выложи сюда текстуру в которой, как ты говоришь, цвет по разному отображается при загрузке.

Можно взять любую текстуру.
Если хочешь сравни, посмотри на цифры, загрузи через Content и через FromStream.

И так, после вашей нулевой реакции на мои посты, где преведен тот факт, что текстуры абсолютно одинаковые через фром стрим и через контент лод, я решил написать проект, который бы помог понять вам в чем ваш косяк.
Собственно сам проект тут: http://depositfil.../iwnpxkqhq

О проектике:
загружается три png текстуры:
одна через метод Content.Load
вторая через Texture2D.FromStream
третья из текстового файлика, который создается на основе загруженной текстуры

считается количество неодинаковых байт и все это дело выводится на экран
кнопками вверх-вниз выбираем какую из трех текстур в данный момент рисовать на экран
ЗЫ
все текстуры с прозрачностью, о чем свидетельствует то, что мы видим текст нарисованный до вызова отрисовки текстур.
2 IMCO или код проекта с той частью которая у вас, как вы считаете, неправильно работает или буду думать что у вас проблема в том, что "хочу то не знаю чего оттудова не знаю откудава и вообще уже со вчерашнего дня сильно хочу"
ЗЫЫ
напоследок
спешиально сделал проект в конфигурации Release, чтобы вы увидели размеры файлов:
.txt = 1875kB
.png = 124kB
.xnb = 86;
Ко всему еще оказывается, что пляска с бубном вокруг размера не стоит ничего.
А то, что у вас большой размер xnb файла, так это потому что стоит конфигурация Debug в которой выключена оптимизация ContentProcessor'а;
Изменил(а) PhilippOK, 12.01.2013 21:28:20
 
za5
#18 Распечатать сообщение
Опубликовано 16.01.2013 18:49:41
Старший специалист


Сообщений: 402
Зарегистрирован: 13.08.11

PhilippOK, спасибо, что написал. мне тоже странным показалось почему такой большой то получился размер скомпилированной картинки у IMCO

я взял пнг 2048x2048 с альфой фрактал.

.png original 4997kb
.png debug 16385kb
.png release 4160kb

IMCO, так что можешь выкидывать свой GZIP :D
Изменил(а) za5, 16.01.2013 18:54:24
http://www.x-graph.ru/
http://www.cyberforum.ru/xna/
 
Перейти на форум:
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

27.08.2014
Я умею немного на asp.net + html и css

22.08.2014
на ASP mvc 3 есть пару проектов. Могу помочь, если нужно. Обидно, если закроется Frown

21.08.2014
я тоже ноль

21.08.2014
Я в вебе только с php занимался да и то на уровне чтоб работало.

21.08.2014
Я в вебе полный ноль…

21.08.2014
Переводить его надо, хоть на ту же азуру. И двиг менять на что-то современное. Если есть веб-разрабы - можем скооперироваться. Один делать не буду.

21.08.2014
не знаю всех нюансов по оплате и все хорошее когда нибудь заканчивается

21.08.2014
А что случилось?

21.08.2014
похоже сайт будет работать до 28го числа

09.08.2014
Апи пока не видел. Но есть приложение в магазине Live Lock Screen BETA, так что думаю скоро будет

08.08.2014
Я про API для Update1. На нем работает это

08.08.2014
А что именно нужно? Чтото и сейчас открыто http://msdn.micro.
...105).aspx

06.08.2014
Кто-нибудь слышал об открытии доступа к Lock Screen Api?

31.07.2014
VPDExpress на базе MVS 2012, ни в какую не ловит исключения. Даже если их сам создаешь. И всех так?

25.07.2014
С днем системного администратора причастных к этой профессии! По случаю - тортик от жены

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,63 секунд 8,709,562 уникальных посетителей