2009-10-20 2 views
5

После прочтения wikipedia article на архитектуре WPF я немного смущен преимуществами, которые WPF предложит мне. (Википедия не является хорошей исследовательской ссылкой, но я нашел ее полезной). У меня есть некоторые вопросыАрхитектура WPF и ускорение графики Direct3D

1) WPF использует поверхности d3d для рендеринга. Тем не менее, сценарий отображается на поверхности d3d интегрированным слоем мультимедиа, который работает на процессоре. Это правда ?

2) Я только что узнал, задав здесь вопрос, что растровые изображения не используют собственные ресурсы. Означает ли это, что если я использую много изображений, MIL будет копировать каждый при рендеринге, а не сохранять растровые изображения на видеокарте в виде текстуры?

3) В статье упоминается, что WPF использует алгоритм живописцев, который находится назад. Это больно медленно. Есть ли какие-либо соображения, почему WPF не использует Z-буферизацию и визуализацию спереди назад? Я предполагаю, что это самый простой способ обработки прозрачности, но он кажется слабым.

Причина, по которой я спрашиваю, это то, что я думаю, что для меня не будет разумно накладывать сотни кнопок на экран, хотя мои коллеги говорят, что его directx ускоряется. Я не верю, что весь directx ускорил бит WPF. Раньше я работал над видеоиграми, и моя память о написании кода d3d и opengl подсказывает мне быть осторожным.

ответ

3

Для вопросов № 1 и № 3 вы можете проверить this section SDK, который обсуждает the Visual class и как его команды рендеринга обмениваются между каркасом более высокого уровня и уровнем интеграции мультимедиа (MIL). В нем также обсуждается, почему используется алгоритм живописцев.

Для № 2 нет, это определенно не так. Данные растровых изображений будут перенесены в аппаратное обеспечение и будут кэшироваться там.

+0

Спасибо. Ссылка на архитектуру была очень полезной при ответе на некоторые из моих вопросов :) –

2

Я тестировал это, я написал две программы, которые показывают 1000 кнопок на экране, один в WinForms и один в WPF, оба работали отлично.

Я тогда толкнул, что до 10 000 кнопок, в этот момент приложение WPF заняло несколько секунд, чтобы начать, но работать нормально, приложение WinForms не запускалось.

Win32 сам (и WinForms) не создан для приложений с сотнями элементов управления (поверьте, я написал такое приложение), в какой-то момент он просто перестает работать, WPF, с другой стороны, продолжает работать, даже если он замедляется немного вниз в какой-то момент.

Итак, если вам нужно наложить много элементов управления на экран, WPF - это лучший выбор (если вы не хотите катить свой собственный интерфейс пользовательского интерфейса), и вы думаете, что можете сделать лучше, чем вся команда MS perf).

Кроме того, у WPF есть много преимуществ, кроме графического ускорения: более богатая графика, графическая модель, с которой легче работать, анимация, 3d и мой личный фаворит - потрясающая привязка данных.

Это позволит вам быстрее развивать более богатые пользовательские интерфейсы, и я думаю, что это будет иметь гораздо большее значение, чем используемый алгоритм рисования.

Кстати, если вам нужно положить сотни кнопок на экране это, вероятно, будет плохой пользовательский опыт и вы можете пересмотреть свой дизайн пользовательского интерфейса,

+0

Увы, мое приложение показывает вид коммутатора, в котором есть много кнопок, чтобы оператор чувствовал себя комфортно. Пользовательский интерфейс настолько загроможден, но им это нравится.Новая версия, над которой я работаю, будет иметь возможность плавать кнопки, которые не помогают уменьшить беспорядок. Я сомневаюсь, что я выкручу свою собственную фреймворк, WPF будет просто отлично :) –

Смежные вопросы