Что выбрать GDI vs DirectX vs OpenGL?
Вопрос в том, что использовать для вывода... С OpenGL'ом я знаком, но знаю что для вывода он использует DirectDraw, по нему у меня есть кинга Ламота, так что тоже проблем нет, !но непомню где прочитал, что изза остановки разработки DirectDraw, GDI стал опережать по скорости его... незнаю правда это или нет... но если так то можно в GDI создавать картинку рисовать в неё а потом копировать на экран... с GDI я благо хорошо знаком.
Не используются возможности API, потому что хочу отойти от представления объекта в полигональном виде и использовать алгоритм рейкэстинга... а в современных API это реализвать не получится...
Спасибо.
GDI никогда не обгонит DirectDraw по скорости, все-таки прямой доступ к железу.
На современных GAPI имеются реализации Raytracing-а. Я правда их не видел, но знаю что есть.
Так как ты собираешься рендерить все на CPU то выводить можно и GDI-ем. С теми затратами которые ты потратишь на рендер, можно и GDI использовать, разници сильно не будет заметно
Есть такое распространенное убеждение. Народ поглядел таблицу импорта (а там указан [FONT="Courier New"]DDRAW.DLL[/FONT]) и решил, что OpenGL через DirectX работает.
Из [FONT="Courier New"]DDRAW.DLL[/FONT] импортируется [FONT="Courier New"]DirectDrawCreate[/FONT], как раз для прямого доступа.
Кора
Попутный вопрос, можно ли работать с GPU без DirectX or OpenGL.
типа на асме, что б в одно время проц щитал одно а гпу другое...
И всё таки OpenGL юзает DirectDrawCreate?
И всё таки OpenGL юзает DirectDrawCreate?
Естественно. Создает объект с доступом к железу. Это же Винда, а у неё и DirectX'а один разработчик... ;)
Попутный вопрос, можно ли работать с GPU без DirectX or OpenGL.
Можно посмотреть-поискать здесь. Одно время там были дебаты по этому поводу. Информации проходило много, не вижу смысла сюда копировать. Ищи.
Имеются ввиду параллельные вычисления?
GDI разрабатывали тож мелкомягкие, и я не думаю что там принципиально другой подход, ведь GDI тоже имеет доступ к железу, но я не думаю что он тож делает это через CreateDirectDraw...
Допустим я создам объектик при помощи CreateDirectDraw, и буду отрисовывать через этот интерфейс, что может снизить быстродействие в отличае от того если бы я полностью пользовался DirectX или OpenGL.
P.S. - Direct3D в итоге тоже отрисовывает через DirectDraw?
Нет. Direct3D использует прямое обращение к драйверу видеокарты (как и DirectDraw)
GDI не использует ресурсы видяхи. Он самостоятельно отрисовыет все, затем копирует это в видеопамять. То есть все просчеты ведется на CPU. DirectDraw, Direct3D и OpenGL через драйвер видеокарты используют GPU для просчетов (например, освещения и т.д. а BitBlt В DirecDraw делает GPU)
Можно, но, кажется, только через драйвер.
Подскажите плz...
Это про DirectDraw и прямой доступ. Потом спрашивать буду. ;)
Про остальное позже...
А вот и нет. GDI точ также использует все аппаратные врзможности видюхи по выводу плской графики. Более того, сейчас, по большому счёту, DirectDraw - это ActiveX-враппер над Win GDI
у меня появилась идея провести експеримент, кто быстрее отрисут...
2Lerkin
спасибо... сегодня надо попробовать дома.
Не спорю, может быть. Я не специалист по GDI, люблю больший уровень доступа к железу, которого нет у GDI. GDI - прослойка между видеокартой (драйвером) и программой. Такой же прослойкой является и DirectDraw, Direct3D, OpenGL и т.д. Но GDI слишком толстая прослойка для высоко скоростного вывода. Если протестировать на скорость DirectDraw и GDI, то DirectDraw должен выиграть. Из этого можно сделать вывод, что для критичного по скорости вывода 2D графики нужно использовать DirectDraw.
Не понял? Когда я говорил что мне не нравится уровень доступа к железу у DirectDraw? Его уровень меня вполне устраивает. Да и вообще я давно перешёл на Direct3D.
Аффтар, или спрашивай что-нибудь путное, или заканчивай пустой треп.