Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > отрисовка 2D графики


Автор: chipset 4.11.2004, 14:46
GDI:
Плюсы:
1. Поддержка виндовс, не возникнет проблем несовместимости.
2. Направленность на 2D.
Минусы:
1. Офигенная тормознутость.
2. Отсутствие поддержки 3D
3. Нема кроссплатформенности
GDI+
Плюсы:
1.Поддержка большого кол-ва граф. форматов
Минусы:
1.Необходимо таскать DLL.
2. Те же что у GDI
DirectDraw
Плюсы:
1. Быстрота
2. Если что можно вызвать Direct3D.
3. Поддержка Microsoft
4. Если что можно перенестись на .NET c managed DirectX
Минусы:
1. Нема кроссплатформенности
2. Отсутствует опыт в нём.
OpenGL
Плюсы:
1. Быстрота
2. Встроенная поддержка 3D
3. Как бы кроссплатформенность граф. движка
Минусы
1. Отсуствие шейдеров (а на кой они мне? smile)
2. Возможно не потребующаяся лишняя трёх-мерность.
3. Сложнее уйти на .NET
4. ?
Java(AWT,Swing, etc..
Плюсы:
1. Кроссплатформенность, это очень полезно поскольку мою прогу можно будет
безгемморойно запустить на Mac OS.
Минусы:
1. Полное отсутствие любого опыта (Java форумы, держитесь!)
2. Нету минусов из-за первого пункта...
Пока лидером намечается DirectDraw.
Очень жду комментариев, новых вариантов и плюсов/минусов в текущие smile
Благодарю за внимание.
ЗЫ.
Очень сильный аргумент "%s sux, %s rullezzzzzzzz!!!" не принимается по причине своей неотразимой силы.

Автор: Elfet 5.11.2004, 12:57
OpenGL smile так как тока его знаю , ну может быть ещё DirectDraw, т.к. тоже пользовался smile



chipset, а АктивХ ?

Автор: chipset 6.11.2004, 17:28
Цитата(Elfet @ 5.11.2004, 01:57)
chipset, а АктивХ ?

ActiveX - технология отрисовки 2D графики? smile

Автор: chipset 7.11.2004, 04:34
Да по всей видимости буду использовать DirectDraw, спасибо всем за комментарии..

Автор: Elfet 7.11.2004, 17:27
Цитата(chipset @ 6.11.2004, 18:28)
ActiveX - технология отрисовки 2D графики? 

ой, ошибся smile

Автор: S.A.P. 8.11.2004, 02:04
Цитата(chipset @ 7.11.2004, 04:34)
Да по всей видимости буду использовать DirectDraw, спасибо всем за комментарии..

Это все зависит от того, что ты собираешся делать. Если тебе надо всего лишь, например построить какой - нибудь график функции, на плоскости, то не стоит париться и юзать OpenGL smile , для этой цели вполне сойдет GDI (если ты конечно не пишешь для Линуха). А если надо делать какую - нибудь супер мега 2D игру типа Diablo 2, то я бы использовал Direct Draw.
Во- первых в любом случае (если конечно проект серьезный) ты так или иначе будешь использовать библиотеки DirectX. Как минимум Direct Input, а то и Direct Sound (что уж там мелочиться smile ). А использовать сразу несколько библиотек, имеющие общие функции - это ИМХО геморрой. Конечно бывают такие случаи, например в случае c 3D играми, но это не наша вина, а вина Билла, пусть оптимизирует и упрощает smile . Но в случае с 2D, я считаю, что Direct Draw лучший вариант из предложенных, хотя бы потому, что создан специально для этого smile , разработан производителями нашего любимого компилятора smile , имеет хорошую документацию с примерами.

Автор: chipset 10.11.2004, 16:56
Perchilla
в граф. редакторе DirectInput'a и DirectSound'a не будет. smile

Цитата(Perchilla @ 7.11.2004, 15:04)
Если тебе надо всего лишь, например построить какой - нибудь график функции, на плоскости, то не стоит париться и юзать OpenGL  , для этой цели вполне сойдет GDI (если ты конечно не пишешь для Линуха).

Векторная графика? Боюсь GDI будет зверски тормозить...
На линух врядли а вот на Macintosh'и кто знает..

Автор: S.A.P. 10.11.2004, 17:15
chipset ты бы хоть сразу сказал, что ты графический редактор пишешь, а то из твоего поста ничего не ясно. Яж думал, что вопрос звучит типа: "какия из технологий отрисовки 2D графики лучше?". Вот и выставили полным идиотом smile smile smile .
Ладно проехали. Поскольку я не совсем понимаю навороченности будущего графического редактора и совсем не знаю, что такое GDI+, то единственное, что могу посоветовать - DitectDraw. smile

Автор: Mad 10.11.2004, 17:19
chipset
Эсли речь идет о векторной графике, то DirectDraw тебе не поможет (он о такой просто не знает smile ), DirectDraw расчитан на растровые данные.

Кстати, такие проекты как Photoshop, Corel вполне обходятся GDI (да на слабых тачках иногда видны промежуточные перерисовки, но это мелочь)

Если говорить о кроссплатформенности, то тут тока OGL (ставиш орто проекцию и у перед smile )

Автор: chipset 11.11.2004, 01:31
Цитата(Mad @ 10.11.2004, 06:19)
Эсли речь идет о векторной графике, то DirectDraw тебе не поможет (он о такой просто не знает  ), DirectDraw расчитан на растровые данные.

Понимаю но всё ж GDI отрисовывает медленее графику.


Цитата(Perchilla @ 10.11.2004, 06:15)
chipset ты бы хоть сразу сказал, что ты графический редактор пишешь, а то из твоего поста ничего не ясно. Яж думал, что вопрос звучит типа: "какия из технологий отрисовки 2D графики лучше?". Вот и выставили полным идиотом    .

Извини smile
Правда в заголовке темы "отрисовка 2D графики, граф. редакторе".
Добавлено @ 01:35
Цитата(Mad @ 10.11.2004, 06:19)

Если говорить о кроссплатформенности, то тут тока OGL (ставиш орто проекцию и у перед  )

Или Java+ихние_либы если пойти на компромисс с скоростью.
Получается GDI вообще вылетает из игры:
1. Если жертвовать переносимостью остается DirectDraw
2. За те же "деньги" можно получить кроссплатформенность используя Java.

Цитата(Mad @ 10.11.2004, 06:19)
Кстати, такие проекты как Photoshop, Corel вполне обходятся GDI (да на слабых тачках иногда видны промежуточные перерисовки, но это мелочь)

Вот поэтому я и затеял голосование собссна... smile
Добавлено @ 01:35
Типа не пойму преимуществ GDI, зачем его использовать гигантам...

Автор: manu 11.11.2004, 01:56
Имхо -- нужно самому рисовать на растре а потом передавать на скрин с помощью чего угодно. Иначе просто несерьезно получается...

Автор: Mad 11.11.2004, 12:42
chipset и не мешалобы уточнить, о какой графике мы говорим растровой или векторной smile (подход всетаки разный)

Автор: chipset 11.11.2004, 15:08
Цитата(Mad @ 11.11.2004, 01:42)
chipset и не мешалобы уточнить, о какой графике мы говорим растровой или векторной  (подход всетаки разный)

Туплю я, туплю.. smile smile Скорее всего будет выбор: в памяти всё хранится в растре или векторе.
Наверное сделаем так:
Цитата(manu @ 10.11.2004, 14:56)
Имхо -- нужно самому рисовать на растре а потом передавать на скрин с помощью чего угодно.

растр передается в виде текстуры DirectDraw а он уже и накладывает текстурку куда нибудь.
Тогда существует возможность добавления эдакой небольшой 3D-мерности..


Добавлено @ 15:09
Суть в том что GDI будет тормозить при выводе этого растра.

Автор: Mad 11.11.2004, 15:24
Цитата(chipset @ 11.11.2004, 15:08)
Скорее всего будет выбор: в памяти всё хранится в растре или векторе.

Я еще вижу смысл давать выбор ползователю как работать (с векторами или с растром), но довать ему выбор как хранить внутренние данные это ... smile



Цитата(chipset @ 11.11.2004, 15:08)
растр передается в виде текстуры DirectDraw

В DirectDraw нема текстур smile это уже из D3D (хотя и храница в поверхностях DirectDraw smile )
На текстуры, между прочим, накладываються определенные ограничения (по размерам).

В зависимосьти от выбранного метода хранения и следует выбирать API
растр - GDI или анологичные крос-платформенные либы (кстати если ты оптимизированно подготовиш ВЕСЬ растр в памяти, то тормознотасть GDI сказываться не бедет так как будет тока один вызов GDI BitBlt на фрэйм)
вектор - OGL


Цитата(chipset @ 11.11.2004, 01:31)
Типа не пойму преимуществ GDI, зачем его использовать гигантам...

Потому что, выбери они тотже DirectDraw, и получилибы зависимость от комлектности операционки (а именно версий ентого самого DirectX. хоть мелкософтовцы и орут, что версии совместимы, на самом деле это не совсем так.

Автор: chipset 11.12.2004, 01:25
Цитата(manu @ 10.11.2004, 14:56)
Имхо -- нужно самому рисовать на растре а потом передавать на скрин с помощью чего угодно. Иначе просто несерьезно получается...

Спасибо за совет. Наверное так и буду делать... Разнесу граф. либу и интерфейс по разным модулям, и буду делать вызовы к ней.
Я уже и название придумал smile

Автор: [WoPR]@!!ex 10.1.2005, 08:04
Если не хош особо заморачитваться, используй GDI. при правильном подходе никто не заметит его тормознутости. Сразу забудь о DX и OGL. У DX'а большие проблемы с совместимостью, а OGL - заточен под 3Д. Уточни задачу, тогда можно будет точно все описать. Я на написании редакторов собаку съел,... две. ;)

Автор: chipset 10.1.2005, 14:16
Цитата
@!!ex, 9.1.2005,  21:04]Если не хош особо заморачитваться, используй GDI. при правильном подходе никто не заметит его тормознутости.

http://gzip.rsdn.ru/forum/Message.aspx?mid=962451&only=1
Это к GDI+.
Насчёт же GDI, я боюсь там не хватит возможностей.
Цитата
@!!ex, 9.1.2005,  21:04]Уточни задачу, тогда можно будет точно все описать.

Простой, двух-мерный (правда с небольшими 3Д фичами) векторный+растровый редактор.
Больше ориентирован на обработку (выделения, оптимизации, и т.д.) чем на создание (кисти, и т.д..).

Автор: Guest 10.1.2005, 20:44
Раз будет 3Д, значит юзай OGL, с DX в 3Д я не работал, поэтому сказать ничего не могу.
Но растры в OGL выводятся довольно тормознуто... Не мог бы мне на мыл([email protected]) или на ICQ(228305662) кинуть подробное описание того, для чего нужен твой редактор и как он предполагается будет работать? А то какой-то бестолковый разговор получается.

Автор: zhgutov 5.2.2005, 01:48
А как вы смотрите на отрисовку верторной графики в OpenGL? Быстро? Удобно?

Автор: chipset 5.2.2005, 02:05
zhgutov, как решено на текущий момент изображение будет проецироваться на полигон в виде массива пикселей и выводиться посредством OpenGL.

Автор: Cheba 5.2.2005, 03:26
http://www.opengl.org/documentation/opengl_current_version.html...

Автор: chipset 5.2.2005, 05:17
Cheba и причем тут это? smile

Автор: Cheba 5.2.2005, 13:55
Ты там что-то прошейдеры говорил... smile

Автор: chipset 5.2.2005, 17:07
Цитата(Cheba @ 5.2.2005, 02:55)
Ты там что-то прошейдеры говорил... smile

Хм, использовать 3D фичи для ускорения 2D графики.... Интересно.

Автор: zhgutov 7.2.2005, 13:48
А будет ли этот механизм работать быстрее в случае, если требуется «нарисовать» много-много коротких линий, чем с помощью GDI?

Автор: chipset 2.3.2005, 17:13
Цитата(zhgutov @ 7.2.2005, 02:48)
А будет ли этот механизм работать быстрее в случае, если требуется «нарисовать» много-много коротких линий, чем с помощью GDI

Какой?
Пока решили использовать собственные библиотеки рисования и выводить пикселы на OpenGL'ную плоскость.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)