Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Mono, фигня? 
:(
    Опции темы
Ch0bits
Дата 11.5.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 1
Всего: 62



Цитата(kamre @  11.5.2009,  14:46 Найти цитируемый пост)
А как "не ленивые студенты" отрисовывают векторную графику в .NET

Ща можно XNA  smile 
Только она не векторная, зато тянет с собой большущий рантайм, подстать самому фреймворку.  smile 

Это сообщение отредактировал(а) Ch0bits - 11.5.2009, 15:26
PM WWW   Вверх
source777
Дата 11.5.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(kamre @  11.5.2009,  14:46 Найти цитируемый пост)
Честно говоря я к .NET/Mono только присматриваюсь. А как "не ленивые студенты" отрисовывают векторную графику в .NET/Mono? 
А не студенты используют OpenGL(предпочтительнее) или DirectX.


Цитата(kamre @  11.5.2009,  14:46 Найти цитируемый пост)
Mono претендует на совместимость с .NET, значит обязано поддерживать и отрисовку через API поверх GDI+.
Чушь, Mono претендует на совместимость со стандартом ISO по поводу CLI, а GDI+ туда не входит(кстати GDI+ вообще в .NET не входит, просто у WinForms есть привязки для работы с GDI+), так что не надо всё в одну кучу сваливать. 



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
kamre
Дата 11.5.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: нет
Всего: 13



Цитата(source777 @ 11.5.2009,  19:42)
Чушь, Mono претендует на совместимость со стандартом ISO по поводу CLI, а GDI+ туда не входит...

Как это не претендует:
Цитата

Mono Feature Highlights
Microsoft Compatible API
Run ASP.NET, ADO.NET, and Windows.Forms 2.0 applications without recompilation

??

Цитата(source777 @ 11.5.2009,  19:42)
Цитата(kamre @  11.5.2009,  14:46 Найти цитируемый пост)
А как "не ленивые студенты" отрисовывают векторную графику в .NET/Mono? 
А не студенты используют OpenGL(предпочтительнее) или DirectX.

Меня конкретно интересует векторная 2D графика со сглаживанием. Поэтому первое что я решил попробовать в .NET/Mono - это System.Drawing.Graphics, который рисует через GDI+. Но поддержка System.Drawing.Graphics в Mono уж слишком кривая и тормозная сейчас.

А сами по себе OpenGL/DirectX слишком низкоуровневые для отрисовки векторной графики, так что простыми bindings здесь не обойтись. Как именно предлагается рисовать в .NET/Mono через OpenGL? Что используют "не студенты"?

Вообще я пока только единственный хороший вариант знаю для отрисовки векторной графики через OpenGL: Qt Arthur с OpenGL pipeline на современной видеокарте. Вот мне и интересно, что же .NET/Mono могут предложить аналогичного...
PM MAIL   Вверх
Ch0bits
Дата 11.5.2009, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 1
Всего: 62



Mono Cairo library
Cairo is a multi-platform library providing anti-aliased
vector-based rendering for multiple target backends.
PM WWW   Вверх
source777
Дата 11.5.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(kamre @  11.5.2009,  21:19 Найти цитируемый пост)
А сами по себе OpenGL/DirectX слишком низкоуровневые для отрисовки векторной графики
С чего это вдруг?

Цитата(kamre @  11.5.2009,  21:19 Найти цитируемый пост)
Как это не претендует:
Цитата

Mono Feature Highlights
Microsoft Compatible API
Run ASP.NET, ADO.NET, and Windows.Forms 2.0 applications without recompilation

А вот так это. Слой совместимости с Microsoft API не означает полной совместимости, она и невозможна даже теоретически пока исходники Windows не станут Open Source. Если тебя интересует это второстепенное направление, то пользуйся MoMA для выявления не реализованных функций.


Цитата(kamre @  11.5.2009,  21:19 Найти цитируемый пост)
Меня конкретно интересует векторная 2D графика со сглаживанием.
Ну если только 2D, то пользуйся Mono.Cairo - это очень похожая по API на GDI+ штука, но работает через разные бэкенды(может и через OpenGL), а не через WinAPI`шную GdiPlus.dll.

Добавлено через 1 минуту и 9 секунд
Ch0bits опередил, хитрюга  smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
kamre
Дата 11.5.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: нет
Всего: 13



Цитата(Ch0bits @ 11.5.2009,  21:58)
Mono Cairo library

Так оно вроде и так используется в линуксовой реализации System.Drawing в Mono:
user posted image
Именно этот pipeline рисует криво и тормозит в линуксе.
PM MAIL   Вверх
kamre
Дата 11.5.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: нет
Всего: 13



Цитата(source777 @ 11.5.2009,  22:06)
Цитата(kamre @  11.5.2009,  21:19 Найти цитируемый пост)
А сами по себе OpenGL/DirectX слишком низкоуровневые для отрисовки векторной графики
С чего это вдруг?


Потому что нужен выскоуровневый API для отрисовки вроде System.Drawing.Graphics или QPainter. Кроме того нужно качественное сглаживание и субпиксельная точность при отрисовке. И это очень нетривиальная задача, которая так просто на низкоуровневом OpenGL не решается: http://homepage.mac.com/arekkusu/bugs/invariance/HWAA.html 

Цитата(source777 @ 11.5.2009,  22:06)

А вот так это. Слой совместимости с Microsoft API не означает полной совместимости, она и невозможна даже теоретически пока исходники Windows не станут Open Source. 

Ну уж отрисовка то векторной графики достаточно точно описывается и Qt/Java2D/.NET рендерят эти шестеренки практически с точностью до пикселей (только сглаживание немного разное у всех). А вот в Mono через System.Drawing.Graphics получается совсем не то, что ожидается и Microsoft не виноват.

Цитата(source777 @ 11.5.2009,  22:06)
Ну если только 2D, то пользуйся Mono.Cairo - это очень похожая по API на GDI+ штука, но работает через разные бэкенды(может и через OpenGL), а не через WinAPI`шную GdiPlus.dll.

Mono.Cairo и используется в линуксовой реализации System.Drawing.
PM MAIL   Вверх
source777
Дата 11.5.2009, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Ты читать то умеешь? Там же тебе чёрным по белому английским языком написано, что означает этот рисунок: 
Цитата

Mono provides two mechanism to draw. The first exposes the Microsoft System.Drawing API (libgdiplus.so) and the second exposes the Cairo API


Ты в этой теме активно гонишь на libgdiplus.so, а к Mono.Cairo она никакого отношения не имеет.

Цитата(kamre @  11.5.2009,  22:28 Найти цитируемый пост)
Mono.Cairo и используется в линуксовой реализации System.Drawing. 
Послать тебя что-ли на поиски пруфлинка, чтобы ты недельку по инету полазил... 

Это сообщение отредактировал(а) source777 - 11.5.2009, 22:44


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
kamre
Дата 11.5.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: нет
Всего: 13



Цитата(source777 @ 11.5.2009,  22:31)
Ты в этой теме активно гонишь на libgdiplus.so, а к Cairo она никакого отношения не имеет.

Как это не имеет? libgdiplus.so реализован поверх Cairo (не Mono.Cairo).
Хотя можно еще попробовать напрямую использовать bindings к Cairo, только вот есть ли они к .NET (не Mono)?

Добавлено через 8 минут и 39 секунд
Да, ошибся немного. На самом деле там так: System.Drawing.Graphics => libgdiplus => Cairo. Т.е. получается разработчики libgdiplus настолько сумели испортить Cairo, что оно тормозит и криво рисует.

Это сообщение отредактировал(а) kamre - 11.5.2009, 22:36
PM MAIL   Вверх
source777
Дата 11.5.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(kamre @  11.5.2009,  22:34 Найти цитируемый пост)
Как это не имеет? libgdiplus.so реализован поверх Cairo (не Mono.Cairo).

В том сообщении я имел в виду именно Mono.Cairo, так что поправил.

Цитата(kamre @  11.5.2009,  22:34 Найти цитируемый пост)
Т.е. получается разработчики libgdiplus настолько сумели испортить Cairo, что оно тормозит и криво рисует.
Они его переделали под MS API, к тому же "использует" не значит, что там уже всё 1 в 1 было, что есть в GdiPlus.dll, подходы то всё-таки разные.

В общем попробуй Mono.Cairo с бекэндом OpenGL, проблем остаться не должно.

Добавлено через 7 минут и 31 секунду
P.S. Впрочем, рисование часиков, да и вообще графика, - это далеко не основное применение .NET`a
А с основными применениями Mono справляется весьма хорошо, так что, я уверен, не стоит ругать такой замечательный проект за 10% несовместимости с .NET и за небольшое отставание от него по некоторым сопутствующим технологиям.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1206 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.