Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Что выбрать GDI vs DirectX vs OpenGL?

17K
28 мая 2007 года
b0oh
18 / / 03.09.2006
От API требуется только доступ к памяти поверхности (вида void * pData;), и битблт. Пишу своё простенькое 3d API, что бы разобратся, поэтому на чём писать без разницы, главное скорость... Планируется (это так, для справки) простенький лист фэйсов, из листа вершин, который загружается из файла, в доме который построил Джэк... затем своими функциями отсечение, проецироваине, освещение; уже после реализации этого, какие нить покруче штуки...
Вопрос в том, что использовать для вывода... С OpenGL'ом я знаком, но знаю что для вывода он использует DirectDraw, по нему у меня есть кинга Ламота, так что тоже проблем нет, !но непомню где прочитал, что изза остановки разработки DirectDraw, GDI стал опережать по скорости его... незнаю правда это или нет... но если так то можно в GDI создавать картинку рисовать в неё а потом копировать на экран... с GDI я благо хорошо знаком.
Не используются возможности API, потому что хочу отойти от представления объекта в полигональном виде и использовать алгоритм рейкэстинга... а в современных API это реализвать не получится...
Спасибо.
7.9K
28 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Где ты прочитал что OpenGL исп. DirectDraw для вывода? Это новая шутка?
GDI никогда не обгонит DirectDraw по скорости, все-таки прямой доступ к железу.

На современных GAPI имеются реализации Raytracing-а. Я правда их не видел, но знаю что есть.

Так как ты собираешься рендерить все на CPU то выводить можно и GDI-ем. С теми затратами которые ты потратишь на рендер, можно и GDI использовать, разници сильно не будет заметно
9
28 мая 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: ***Zebr@XXL***
Где ты прочитал что OpenGL исп. DirectDraw для вывода? Это новая шутка?


Есть такое распространенное убеждение. Народ поглядел таблицу импорта (а там указан [FONT="Courier New"]DDRAW.DLL[/FONT]) и решил, что OpenGL через DirectX работает.
Из [FONT="Courier New"]DDRAW.DLL[/FONT] импортируется [FONT="Courier New"]DirectDrawCreate[/FONT], как раз для прямого доступа.

7.9K
28 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Lerkin
Кора
17K
28 мая 2007 года
b0oh
18 / / 03.09.2006
Так ваше заключение эксперты?
Попутный вопрос, можно ли работать с GPU без DirectX or OpenGL.
типа на асме, что б в одно время проц щитал одно а гпу другое...
И всё таки OpenGL юзает DirectDrawCreate?
9
28 мая 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: b0oh
...
И всё таки OpenGL юзает DirectDrawCreate?


Естественно. Создает объект с доступом к железу. Это же Винда, а у неё и DirectX'а один разработчик... ;)

9
28 мая 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: b0oh
...
Попутный вопрос, можно ли работать с GPU без DirectX or OpenGL.


Можно посмотреть-поискать здесь. Одно время там были дебаты по этому поводу. Информации проходило много, не вижу смысла сюда копировать. Ищи.

Цитата: b0oh
типа на асме, что б в одно время проц щитал одно а гпу другое...


Имеются ввиду параллельные вычисления?

17K
28 мая 2007 года
b0oh
18 / / 03.09.2006
Окей, могу ли я добится приличной производительности не используя DirectX и OpenGL?

Цитата:
Естественно. Создает объект с доступом к железу. Это же Винда, а у неё и DirectX'а один разработчик...


GDI разрабатывали тож мелкомягкие, и я не думаю что там принципиально другой подход, ведь GDI тоже имеет доступ к железу, но я не думаю что он тож делает это через CreateDirectDraw...

Допустим я создам объектик при помощи CreateDirectDraw, и буду отрисовывать через этот интерфейс, что может снизить быстродействие в отличае от того если бы я полностью пользовался DirectX или OpenGL.

P.S. - Direct3D в итоге тоже отрисовывает через DirectDraw?

7.9K
28 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Цитата: b0oh
Direct3D в итоге тоже отрисовывает через DirectDraw?


Нет. Direct3D использует прямое обращение к драйверу видеокарты (как и DirectDraw)

Цитата: b0oh
GDI разрабатывали тож мелкомягкие, и я не думаю что там принципиально другой подход, ведь GDI тоже имеет доступ к железу, но я не думаю что он тож делает это через CreateDirectDraw...


GDI не использует ресурсы видяхи. Он самостоятельно отрисовыет все, затем копирует это в видеопамять. То есть все просчеты ведется на CPU. DirectDraw, Direct3D и OpenGL через драйвер видеокарты используют GPU для просчетов (например, освещения и т.д. а BitBlt В DirecDraw делает GPU)

Цитата: b0oh
можно ли работать с GPU без DirectX or OpenGL


Можно, но, кажется, только через драйвер.

17K
28 мая 2007 года
b0oh
18 / / 03.09.2006
прошу вас, о люди, сказать мне внятно и конкретно, что для моих целей разумнее использовать, что бы по максимуму задействовать и GPU тож, или я могу довольствоватся только BitBlt аппаратным? Или даж пускай только BitBlt... но как мне это сдлеать юзать DirectDraw+DirectSurface? Или же в OpenGL найти подобную весч, подскажите, или же всё тот же GDI? А может пойти как делает OpenGL получить обьект с доступом к железу посредством CreateDirectDraw, и использовать в своих целях...
Подскажите плz...
9
28 мая 2007 года
Lerkin
3.0K / / 25.03.2003
Получение средствами DirectDraw прямого доступа к видеопамяти.
Это про DirectDraw и прямой доступ. Потом спрашивать буду. ;)
Про остальное позже...
7.9K
29 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Можешь использовать и GDI. Но лучше, наверное, DirectDraw. Хотя бы минимальный выигрыш. А использовать OpenGL для вывода 2-х мерной картинки - бред. Он больше по 3D.
534
29 мая 2007 года
HarryAxe
448 / / 19.01.2006
Цитата:
GDI не использует ресурсы видяхи. Он самостоятельно отрисовыет все, затем копирует это в видеопамять. То есть все просчеты ведется на CPU. DirectDraw, Direct3D и OpenGL через драйвер видеокарты используют GPU для просчетов (например, освещения и т.д. а BitBlt В DirecDraw делает GPU)

А вот и нет. GDI точ также использует все аппаратные врзможности видюхи по выводу плской графики. Более того, сейчас, по большому счёту, DirectDraw - это ActiveX-враппер над Win GDI

17K
29 мая 2007 года
b0oh
18 / / 03.09.2006
так, значит я был прав? кому же верить?.. HarryAxe, а ты можешь привести источник?
у меня появилась идея провести експеримент, кто быстрее отрисут...

2Lerkin
спасибо... сегодня надо попробовать дома.
7.9K
29 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Цитата: HarryAxe
А вот и нет. GDI точ также использует все аппаратные врзможности видюхи по выводу плской графики. Более того, сейчас, по большому счёту, DirectDraw - это ActiveX-враппер над Win GDI


Не спорю, может быть. Я не специалист по GDI, люблю больший уровень доступа к железу, которого нет у GDI. GDI - прослойка между видеокартой (драйвером) и программой. Такой же прослойкой является и DirectDraw, Direct3D, OpenGL и т.д. Но GDI слишком толстая прослойка для высоко скоростного вывода. Если протестировать на скорость DirectDraw и GDI, то DirectDraw должен выиграть. Из этого можно сделать вывод, что для критичного по скорости вывода 2D графики нужно использовать DirectDraw.

17K
29 мая 2007 года
b0oh
18 / / 03.09.2006
***Zebr@XXL*** если ты любишь больший уровень доступа к железу, которого нет ни у GDI ни у DirectDraw... как же ты его получаешь?
7.9K
30 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Цитата: b0oh
***Zebr@XXL*** если ты любишь больший уровень доступа к железу, которого нет ни у GDI ни у DirectDraw... как же ты его получаешь?



Не понял? Когда я говорил что мне не нравится уровень доступа к железу у DirectDraw? Его уровень меня вполне устраивает. Да и вообще я давно перешёл на Direct3D.

17K
30 мая 2007 года
b0oh
18 / / 03.09.2006
хм... интересно а Direct3D может же использовать возможности аппаратной 2D акселирации... а что если попробовать отрисовать через Direct3D 2D графику, будет ли выгода? Или это уже извращение?..
7.9K
30 мая 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Выгода будет, но это уже извращение. Как и использовать OpenGL для этих целей.
9
30 мая 2007 года
Lerkin
3.0K / / 25.03.2003
[COLOR="Red"]официальное предупреждение[/COLOR]

Аффтар, или спрашивай что-нибудь путное, или заканчивай пустой треп.
17K
30 мая 2007 года
b0oh
18 / / 03.09.2006
2Lerkin - окей, когда будет результат отпишусь...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог