Re: Стоил ли начинать сейчас учить WinForms?
От: seimur  
Дата: 18.05.11 12:28
Оценка:
Здравствуйте, evo, Вы писали:

evo>Как вы считаете, если сейчас начал изучать .NET и C# стоит ли учить winforms или сразу переходить к WPF. Немножко пробовал winforms и на первый взгляд все просто и логично. С WPF почти не знаком. Читал, что учить значительно труднее. Сложно сделать выбор, когда так мало знаешь. Гуглил этот вопрос и однозначного ответа не нашел. Лично мне было бы интереснее начать с WPF, но не хочется, чтоб получилось так, что много где еще нужны winforms, а я не буду их знать.


Однозначно стоит изучать WPF! на изучение WPF уйдёт больше времени, а WinForms проще и легко сориентироваться по ходу дела.
Теоретически нет разницы между теорией и практикой, но на практике она есть
Re[17]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 25.05.11 17:06
Оценка:
Здравствуйте, matumba, Вы писали:

M>эээ... мужики, вы чо, издеваетесь? Я знал, что в ДиректИксе есть "чистое 2D", но то, что мелкие извращенцы вместо него заюзают 3D — я не мог и в кошмарном сне представить!!! Всё, мои возражения снимаются — WPF ещё больший сакс, чем я думал!! (((((((


Если бы ты знал как следует Direct3D, то знал бы, что там нету 2D в принципе. Так что иди поучи матчасть прежде, чем выдавать такие негодные высеры...
[КУ] оккупировала армия.
Re[10]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 25.05.11 18:14
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>вы вообще пиксельный или вершинный шедер хоть раз писали? попробуйте как вам говорят выше репорт нарисовать шейдерами шейдеры это эффекты, они делают одно сложное преобразование и всё.


Я писал. С помощью instancing в вершинном шейдере легко можно нарисовать графики мат. функций (которые можно посчитать прямо на видеокарте), с некоторыми приседаниями — абсолютно любой график.
[КУ] оккупировала армия.
Re[11]: Стоил ли начинать сейчас учить WinForms?
От: Kingofastellarwar Украина  
Дата: 25.05.11 18:24
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Здравствуйте, Kingofastellarwar, Вы писали:


K>>вы вообще пиксельный или вершинный шедер хоть раз писали? попробуйте как вам говорят выше репорт нарисовать шейдерами шейдеры это эффекты, они делают одно сложное преобразование и всё.


K>Я писал. С помощью instancing в вершинном шейдере легко можно нарисовать графики мат. функций (которые можно посчитать прямо на видеокарте), с некоторыми приседаниями — абсолютно любой график.


абсолютно любой точно не получится, как минимум 2 ограничения:

1. шейдер имеет предел длины и не он очень небольшой, точно не знаю, но наверно максимум 1к команд, потому что у гпу жесткие требования к скорости шейдров
2. вершинным шейдером сложно рисовать график не по функции, а по данным, особенно если они меняются в рельном времени, например аудиоредатор, их прийдется непрерывно слать в видуху, а мы уже знаем чем это грозит
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[12]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 25.05.11 18:55
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>абсолютно любой точно не получится, как минимум 2 ограничения:


K>1. шейдер имеет предел длины и не он очень небольшой, точно не знаю, но наверно максимум 1к команд, потому что у гпу жесткие требования к скорости шейдров

Дык там и не нужно длинных шейдеров. В видяху гонить одномерную текстуру, например в формате UV, шейдер из неё делает геометрию/модифицирует текущую геометрию.
K>2. вершинным шейдером сложно рисовать график не по функции, а по данным, особенно если они меняются в рельном времени, например аудиоредатор, их прийдется непрерывно слать в видуху, а мы уже знаем чем это грозит
Их в любом случае придётся слать в видеокарту — неважно в виде одномерной текстуры или в виде растра...
[КУ] оккупировала армия.
Re[13]: Стоил ли начинать сейчас учить WinForms?
От: Kingofastellarwar Украина  
Дата: 25.05.11 19:00
Оценка: +1
Здравствуйте, koandrew, Вы писали:

K>Их в любом случае придётся слать в видеокарту — неважно в виде одномерной текстуры или в виде растра...


я думаю гди тут выиграет и по скорости и особенно по оперативности, потому что у него меньше накладных расходов
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[14]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 25.05.11 19:31
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>я думаю гди тут выиграет и по скорости и особенно по оперативности, потому что у него меньше накладных расходов


На самом деле это большой вопрос, ибо в случае Direct3D можно обновлять поток данных асинхронно с рисованием. Да и поток данных всегда меньше, чем готовый битмап графика...
[КУ] оккупировала армия.
Re[18]: Стоил ли начинать сейчас учить WinForms?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 21:17
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Если бы ты знал как следует Direct3D, то знал бы, что там нету 2D в принципе. Так что иди поучи матчасть прежде, чем выдавать такие негодные высеры...


Ну есть Direct2D И DirectWrite
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[19]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 25.05.11 21:22
Оценка:
Здравствуйте, adontz, Вы писали:

A>Ну есть Direct2D И DirectWrite


Да, тока они, во-первых, есть тока в висте+, а, во-вторых, по сути не имеют к DX никакого отношения, кроме части называния
[КУ] оккупировала армия.
Re[20]: Стоил ли начинать сейчас учить WinForms?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 21:26
Оценка:
Здравствуйте, koandrew, Вы писали:

A>>Ну есть Direct2D И DirectWrite

K>Да, тока они, во-первых, есть тока в висте+, а, во-вторых, по сути не имеют к DX никакого отношения, кроме части называния

Ты плохо знаком с их внутреностями. Они оба вполне могут использовать аппаратное ускорение.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[21]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 25.05.11 21:30
Оценка:
Здравствуйте, adontz, Вы писали:

A>Ты плохо знаком с их внутреностями. Они оба вполне могут использовать аппаратное ускорение.


Могут, это так. Но эти либы параллельны DirectX и никак от него не зависят. В висте же даже интерфейс видеодров поменяли под это дело...
[КУ] оккупировала армия.
Re[22]: Стоил ли начинать сейчас учить WinForms?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 21:51
Оценка:
Здравствуйте, koandrew, Вы писали:

A>>Ты плохо знаком с их внутреностями. Они оба вполне могут использовать аппаратное ускорение.

K>Могут, это так. Но эти либы параллельны DirectX и никак от него не зависят. В висте же даже интерфейс видеодров поменяли под это дело...

Ну как же паралельны

About Direct2D
Раздел High Performance with Maximum Availability. Чётко написано "Direct2D is a user-mode library that is built using the Direct3D 10.1 API". Ниже даже диаграмка есть.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[23]: Стоил ли начинать сейчас учить WinForms?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 26.05.11 13:51
Оценка:
Здравствуйте, adontz, Вы писали:

A>Ну как же паралельны


A>About Direct2D

A>Раздел High Performance with Maximum Availability. Чётко написано "Direct2D is a user-mode library that is built using the Direct3D 10.1 API". Ниже даже диаграмка есть.

Признаюсь, не прав, что-то меня переглючило
[КУ] оккупировала армия.
Re[11]: Стоил ли начинать сейчас учить WinForms?
От: Silver_S Ниоткуда  
Дата: 26.05.11 21:50
Оценка: 59 (2)
Здравствуйте, Kingofastellarwar, Вы писали:

K>так вот я ОЧЕНЬ сомневаюсь что ВПФники такие крутые пацаны что смогли на такую сложную структуру впф приложения натянуть технологии упаковки, ибо мне это видится катастофический сложностью, потому что в 3д движках перерисовывается всегда весь экран и есть возможность собрать и подготовить данные.


Добавлю еще.

На DX10.1 перенастройка D3DDevice(например втыкание нового шейдера, и прочее конфигурирование), и вызов Draw может занимать до 0.1 милисекунды, причем от мощи видеокарты это не должно зависеть. Чтобы не потерять 60fps, 16.7 ms на кадр, получается нельзя вызывать Draw(с перенастройкой Device) более 100 раз за кадр. И то там времени останется меньше половины чтобы прорисоваться и Present сделать.

Кроме того в UI есть проблема в том, что может быть очень большая куча мелких контролов и для каждого может быть нужен отдельный clip — отсечение по прямоугольнику. А также индивидуальные трансформацими в каждом контрольчике.
В DX, апаратное отсечение, как таковое, возможно только по одному прямоугольнику — на одну операцию Draw. Прийдется считать обрезания на процессоре.

Насколько я понял по тестам в D2D комбинируют аппаратные обрезания и программные, потому что если Clip(Scissor) менять редко(для больших блоков) то быстродействие не просаживается. Если менять после каждого примитива, то просаживается но совсем чуть чуть — сделано эффективно. Т.е. несколько тысяч изменений ClipRectangle в D2D не проблема — ясно что при чакстых сменах уже не аппаратная обрезалка.
Обрезание вроде мелочь, а без него GUI не сделаешь.

ИМХО, у WPF такая низкая производительность даже не из-за большого количества Draw на кадр. А потому что на стороне процессора много работы делают, и неэффективно. Даже 10тыс мелких прямоугольничков нарисовать проблема. Чтобы нарисовать рамку прямоугольника в универсальном формате — треугольниками с плавающей точкой.
Это ведь надо 8 треугольников. Их через смежности указывать нельзя, получается 24 float числа, на один прямоугольник. Если потом эти 24 числа обрезать и трансформировать(умножать на матрицы) на стороне процессора, то получится нынешняя производительность WPF.

Может в WPF и не все матрицы проц умножает, но в GUI теоретически могут быть на один экран сотни разных матриц.
Как это аппаратно сделать для каждого контрола, на один Draw? В константный буффер загнать массив матриц, а вертексам приписывать индексы матриц? Такое наверно медленно будет работать, да и константные буферы не резиновые.
Re[12]: Стоил ли начинать сейчас учить WinForms?
От: Silver_S Ниоткуда  
Дата: 26.05.11 22:02
Оценка:
S_S> На DX10.1 перенастройка D3DDevice(например втыкание нового шейдера, и прочее конфигурирование), и вызов Draw может занимать до 0.1 милисекунды, причем от мощи видеокарты это не должно зависеть. Чтобы не потерять 60fps, 16.7 ms на кадр, получается нельзя вызывать Draw(с перенастройкой Device) более 100 раз за кадр. И то там времени останется меньше половины чтобы прорисоваться и Present сделать.

WPF поверх DX9 работает, там это еще дольше может происходить. Т.к. в DX10.1 пытались это ускорить.

S_S>Это ведь надо 8 треугольников. Их через смежности указывать нельзя, получается 24 float числа, на один прямоугольник. Если потом эти 24 числа обрезать и трансформировать(умножать на матрицы) на стороне процессора, то получится нынешняя производительность WPF.

Точнее 24 вектора, если они 2d, то 48 float чисел. В мелких прямоугольниках и столько пикселей то нет.
А в WPF врядли экономят вершины указывая смежности(triangle list).
Re[13]: Стоил ли начинать сейчас учить WinForms?
От: Kingofastellarwar Украина  
Дата: 26.05.11 22:06
Оценка:
неплохо бы если бы кому-то удалось взять сложное впф приложение и запрофайлить работу директа во время работы приложения,
не уверен что на фпф такое реально, хотя для профайлинга и даже частичного реинжиниринга игр это уже норма
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[14]: Стоил ли начинать сейчас учить WinForms?
От: Andy77 Ниоткуда  
Дата: 27.05.11 01:51
Оценка: 56 (2)
Здравствуйте, Kingofastellarwar, Вы писали:

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

K>не уверен что на фпф такое реально, хотя для профайлинга и даже частичного реинжиниринга игр это уже норма

Вот хороший пост на схожую тему -
Re[15]: Стоил ли начинать сейчас учить WinForms?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.05.11 22:01
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Вот хороший пост на схожую тему —


В указанном посте ясно написано почему Direct2D существенно эффективнее WPF. Но самое интересное, что при отрисовке сложных сцен Driect2D не особо-то лучше GDI

Direct2D: Hardware Rendering a Browser
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[16]: Стоил ли начинать сейчас учить WinForms?
От: Andy77 Ниоткуда  
Дата: 28.05.11 00:27
Оценка:
Здравствуйте, adontz, Вы писали:

A>В указанном посте ясно написано почему Direct2D существенно эффективнее WPF. Но самое интересное, что при отрисовке сложных сцен Driect2D не особо-то лучше GDI


Ага. Добро пожаловать в прошлое (рисование в память с последующим BitBlt)
Re[17]: Стоил ли начинать сейчас учить WinForms?
От: MxMsk Португалия  
Дата: 28.05.11 08:10
Оценка: -1 :)
Здравствуйте, Andy77, Вы писали:

A>Ага. Добро пожаловать в прошлое (рисование в память с последующим BitBlt)

Я вообще предлагаю вам скооперироваться и сделать бэйдж "WPF не нужен". Заснуть после этого спокойным сном...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.