Ответ: Вопросы по XNA.
Мб в блицмаксе не рисуются объекты когда выходят за экран? Тоесть в функции рендера такая проверка. А в XNA нужно самому проверять.
|
Ответ: Вопросы по XNA.
facepalm
|
Ответ: Вопросы по XNA.
Тогда бы случай с одной картинкой должен был давать одинаковый результат.
Дело в чем-то другом. Тут у меня вопрос возник. А есть ли что-нибудь шустрее Макса, в плане вывода картинок? |
Ответ: Вопросы по XNA.
Цитата:
|
Ответ: Вопросы по XNA.
Цитата:
и попробуй вот так потестить Код:
for (int i = 0; i < 1100; i++) |
Ответ: Вопросы по XNA.
Во втором тесте у картинок есть прозрачность? Спрайт батч имеет еще параметры сортировки спрайтов, что используется по умолчанию?
|
Ответ: Вопросы по XNA.
Нет, прозрачности нигде нету. Про сортировку ничего не знаю, сейчас посмотрю.
Тут появилось две идеи. Может это связано с форматом картинки? Также, возможно, я неправильно убрал ограничение фпс в XNA? З.Ы. Исходники двумя моими постами выше, в оффтопе. |
Ответ: Вопросы по XNA.
Цитата:
Цитата:
Но самый быстрый это: Код:
sprites.Begin(SpriteSortMode.Deferred, BlendState.Additive); Попробуй с такой строчкой. и так попробуй: BlendState.Opaque Но этот медлеенее у меня чем Additive Цитата:
|
Ответ: Вопросы по XNA.
Сейчас нет доступа к ПК. А сильно ли это у тебя повлияло?
|
Ответ: Вопросы по XNA.
Цитата:
Вообщем sprites.Begin(); 8700 sprites.Begin(SpriteSortMode.Deferred, BlendState.Opaque); 8840 не знаю от чего зависит. при каждом запуске разные цифры. щас вообще 8650 было с sprites.Begin(SpriteSortMode.Deferred, BlendState.Opaque); а до этого , как я говорил sprites.Begin(SpriteSortMode.Deferred, BlendState.Additive); выдавал больше чем sprites.Begin(SpriteSortMode.Deferred, BlendState.Opaque); |
Ответ: Вопросы по XNA.
Ну-с, будем ждать ответа знающих, что они думают по этому поводу.
|
Ответ: Вопросы по XNA.
Сделайте задержку на пару секунд перед тестом в XNA, вероятно влияет начальная подгрузка библиотек Net Framework и т.д.
|
Ответ: Вопросы по XNA.
Цитата:
|
Ответ: Вопросы по XNA.
ППерепробывал все варианты в спрайтбатче, и задержку делал. Как ни крути Макс быстрее.
В общем, решился я на отчаянный шаг. На чем, говорите, велосипед изобретают? C++ + OpenGL/DirectX ? Попробую сделать тоже самое, банальный вывод картинок, только на DirectX SDK, и посмотреть, будет ли отличаться результат. Кстати, сложно ли это будет, если я раньше не работал с плюсами? |
Ответ: Вопросы по XNA.
Основная нагрузка идет за счет шейдеров. То что ты напишеш на ДиректИкс будит все равно все отсылать данные на видео карту. А та в свою очередь применять шейдеры.
Цитата:
Вот этот код (точнее некоторые функции внутри него, одна для вертексного, другая для пиксельного шейдера) выполняется, как минимум 4 раза для вертексного (ну у обычной картинки 4 вершины же) и 100*100 раз для пиксельного для картинки размером 100 на 100. Тоесть для каждого пикселя. И если ты хочеш добиться лучшей проиводительности, то тебе нужно помаксимуму упростить код пиксельного шейдера. Тоесть вот эту хрень: Код:
float4 PixelShaderFunction(float2 texCoord: TEXCOORD0) : COLOR0 Поэтому лучше учи HLSL. |
Часовой пояс GMT +4, время: 21:14. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot