Мне было интересно, стоит ли использовать шейдеры для рисования 2D-текстуры в xna. Я спрашиваю, потому что с openGL это намного быстрее, если вы используете GLSL.Стоит ли использовать hlsl-шейдеры для 2D-чертежа
ответ
Все на современном графическом процессоре представлено с использованием шейдера.
Для старого немедленного рендеринга (то есть: glBegin
/glVertex
), который преобразуется в нечто, приближающееся к буферам и шейдерам где-нибудь в драйвере. Вот почему использование GLSL «быстрее» - потому что оно ближе к металлу, вы не проходите через конверсионный слой.
Для современного API, такого как XNA, все уже построено вокруг «буферов и шейдеров».
В XNA SpriteBatch
предоставляет свой собственный шейдер. Исходный код для шейдера: available here. Сам шейдер очень simple: Вершинный шейдер представляет собой одномерное умножение матрицы для преобразования вершин в правильные растровые объекты. Шейдер пикселей просто отображает текстуру вашего спрайта.
Вы не можете много сделать, чтобы сделать шейдер SpriteBatch
быстрее - ему почти ничего не остается. Есть несколько вещей, которые вы можете сделать, чтобы сделать буферизацию более быстрым в определенных обстоятельствах (например: если ваши спрайты не меняются между кадрами), но это своего рода продвинутый. Если у вас возникли проблемы с производительностью с SpriteBatch
, убедитесь, что вы using it properly in the first place. Для чего он делает, SpriteBatch
уже очень хорошо оптимизирован.
Для получения дополнительной информации об оптимизации см. this answer.
Если вы хотите передать пользовательский шейдер в SpriteBatch
(например: для особого эффекта) используют this перегрузку Begin
и передать в соответствующем Effect
.
- 1. Стоит ли использовать SOAP?
- 2. Стоит ли использовать демона?
- 3. Стоит ли использовать JDEE?
- 4. Стоит ли использовать JPA для операторов SELECT?
- 5. Стоит ли использовать TypeScript для CMS?
- 6. Для разработчиков, стоит ли изучать/использовать SSIS?
- 7. Стоит ли использовать FLEX + JAVA
- 8. Стоит ли учиться использовать MSBuild?
- 9. Стоит ли использовать sqlalchemy-migrate?
- 10. Стоит ли использовать прототип или использовать OOP для javascript?
- 11. Sparks + Php-activerecord - стоит ли его использовать?
- 12. Стоит ли использовать встроенную систему профилей ASP.Net?
- 13. Стоит ли использовать PLINQ с ASP.NET?
- 14. Стоит ли использовать slf4j с log4j2
- 15. Стоит ли использовать iPhone SDK 3.0?
- 16. Что стоит использовать Task.Delay()?
- 17. Стоит ли использовать std :: tr1 в производстве?
- 18. Стоит ли использовать более одного веб-трекера?
- 19. Стоит ли использовать шаблон наблюдателя в PHP?
- 20. Стоит ли использовать JQuery UI, размещенный Google?
- 21. Стоит ли использовать Debug.Assert в ASP.NET?
- 22. Стоит ли использовать цепочку методов в C#?
- 23. Локальные переменные Javascript - стоит ли их использовать?
- 24. Когда стоит использовать BindingSource?
- 25. Всегда ли MVP стоит?
- 26. Agile Toolkit, стоит использовать?
- 27. Стоит ли накладные расходы использовать временную таблицу для копирования строки?
- 28. Стоит ли учиться использовать Emacs для веб-разработки
- 29. Стоит ли использовать с RequireJS для проекта AngularJS
- 30. Стоит ли использовать PostGIS для простого вычисления расстояния в PostgreSQL?