Войти
ПрограммированиеФорумГрафика

Что такое DirectX Graphics?

Страницы: 1 2 3 Следующая »
#0
9:07, 3 июня 2019

Если спросить у гугла о opengl, то нет сомнения что это спецификация, которую реализуют производители видеокарт. Но с DirectX Graphics все сложнее, написано что это api.. И если спецификация подразумевает описание api, то слыша api, в голове представляется уже сама реализация. И получается что microsoft сама уже реализовала все драуйвера для всех видеокарт в мире.. Разве такое возможно.. Поясните этот момент.


#1
(Правка: 9:23) 9:16, 3 июня 2019

Прослойка между видеокартой в D3D устроена так же, как и OGL - в WDM есть специальные заглушки с вызовами D3D, которые вендор реализует. Какого-то общего HW интерфейса вроде как нет и не было.

Upd: Нашёл, но это XWDM аж для win2000, поэтому не стоит удивляться что там седьмой dx, да и сами доки неполные, но общее представление думаю даст.
https://docs.microsoft.com/en-us/windows-hardware/drivers/display/direct3d
https://docs.microsoft.com/en-us/windows-hardware/drivers/display… port-direct3d

#2
9:25, 3 июня 2019

monobogdan
Простите, я разволновался и не доформулировал вопрос :(
Перефразирую - DirectX Graphics это тоже спецификация?

#3
(Правка: 9:32) 9:28, 3 июня 2019

uranix
И да, и нет - смотря что понимать под спецификацией.

Кстати, раз уж пошли речь о подноготной гпу драйверов, там можно увидеть заглушки для ddraw. Кто нибудь знает с чем связан выпил hw режима ddraw, если гпу под капотом всё равно поддерживают базовый 2D? Это тупо ограничение от мелкософта(даже если в реализации драйвера есть поддержка dd), или всё таки формальность, и hw контекст всё ещё можно создать?

#4
(Правка: 9:34) 9:32, 3 июня 2019

monobogdan
OGL эталонный пример спецификации. Не GLSL, а именно OGL. D3D подходит под это понятие?

Читая по ссылкам которые вы дали (спасибо!) я только ещё больше запутался. Складывается впечатление, что MS реализует какие-то вычислительные функции, которые в OGL приходится производителям железа реализовывать. Но не сходится так как вычислительные функции это не драйвера о которых там написано..

#5
(Правка: 9:36) 9:35, 3 июня 2019

uranix
> И получается что microsoft сама уже реализовала все драуйвера для всех
> видеокарт в мире..

Нет, см. выше.

И OpenGL и Direct3D (и прочее что входит в DirectX Graphics) - это прежде всего библиотеки программного кода как правило (но не обязательно) уходящие в своих реализациях в уровень драйверов операционной системы, при этом вендоры видеокарт и там и там поставляют как минимум части реализаций в своих драйверах. API - это то как происходит общение с этими библиотеками, та самая спецификация и соглашение о вызовах и передачах параметров.
Про Direct3D разве что можно сказать, что у него обвязочного кода за авторством самого Microsoft намного больше, чем в OGL, но это не качественная, а количественная разница.

#6
(Правка: 9:42) 9:41, 3 июня 2019

uranix
> D3D подходит под это понятие?
Скорее да.

uranix
> которые в OGL приходится производителям железа реализовывать
Всё с точностью наоборот - новые фичи придумывают вендоры и реализовывают в виде расширений для GL. Затем мелкософт, раз в несколько лет собирает это всё в единый комбайн и называет новым D3D.

И если изначальный вопрос звучал как "обязывают ли мелкософт вендоров гпу реализовывать некий функционал для поддержки dx", то нет, не обязывает. Поддержка гпу D3D зависит в основном лишь от реализации драйвера.

#7
9:44, 3 июня 2019

=A=L=X=
Не согласен. Api, это правила взаимодействия с реализацией. Спецификация, это ТЗ (техзадание) по созданию реализации. Разница на самом деле значительная.

И OpenGL это не библиотека, это именно спецификация.

#8
(Правка: 10:28) 10:26, 3 июня 2019

uranix

Вообще сам акроним OpenGL расшировывается как Open Graphics Library. А вообще все API - они есть доступ к каким то программным библиотекам.
Поэтому у OpenGL несомненно есть спецификация, но OpenGL - это не сама эта спецификация. Вообще нет смысла во фразе даже "я установил на компьютер драйвер спецификации" - сразу же звучит бредово.
Поэтому всё это - библиотеки у которых есть спецификации и API (собственно не бывает чтобы были библиотеки без спецификации и API, это всё изначально подразумевается в самой идее программной библиотеки).

#9
(Правка: 11:08) 11:06, 3 июня 2019

monobogdan
> Всё с точностью наоборот - новые фичи придумывают вендоры и реализовывают в
> виде расширений для GL. Затем мелкософт, раз в несколько лет собирает это всё в
> единый комбайн и называет новым D3D.
>
> И если изначальный вопрос звучал как "обязывают ли мелкософт вендоров гпу
> реализовывать некий функционал для поддержки dx", то нет, не обязывает.
> Поддержка гпу D3D зависит в основном лишь от реализации драйвера.

КМК, там процесс согласования фич всё же обоюдный, в смысле между мелкософтом и вендорами и между самими вендорами. Потому что вендорам интересно что бы их фичи появились в DX, а майкрософту, что бы эти фичи всеми вендорами были реализованы и работали +- везде.

#10
13:23, 3 июня 2019

nonamezerox
Ну тут конечно не всегда, иногда фичи тянут из dx в gl.
Если не ошибаюсь, в gl до версии 2.0, blendop'ы без шейдеров(смешивание и прочие простые операции над сэмплерами) утянули как раз из d3d(благо, реализовать это было несложно - поддержка со стороны гпу была). Зато очень гибкое управление памятью и пайплайном мелкософт вроде утянули из вулкана(но я вулкан не трогал, могу ошибаться).

#11
(Правка: 18:17) 18:12, 3 июня 2019

=A=L=X=
> при этом вендоры видеокарт и там и там поставляют как минимум части реализаций
> в своих драйверах
Неа. Современный OpenGL на 100% реализуется драйвером. Если ты вызовешь wglGetProcAddress, и посмотришь на указатель, который тебе вернет функция, то указатель этот будет прямиком из dll, поставляемой драйвером. Т.е. драйвер на 100% реализует спецификацию OpenGL.
В случае с d3d - сами microsoft реализуют d3d api. Разработчикам же драйверов нужно реализовать более тонкий и более низкоуровневый hal слой со своей стороны.

#12
18:14, 3 июня 2019

Ах, да. Ну и самая абсурдная часть opengl - это то, что компиляция glsl кода - задача драйвера. Поэтому каждый вендор в своих драйверах пилит свой конпелятар glsl кода.

#13
18:28, 3 июня 2019

MrShoor
> Неа.

"как минимум" означает что есть и "как максимум". про то, что в D3D намного больше кода реализованного самим Microsoft и общего для всех реализаций я писал одним предложением ниже.

#14
18:30, 3 июня 2019

MrShoor
> это то, что компиляция glsl кода - задача драйвера
Вот это кстати тупо, да. Надо было засовывать в wgl/mesa этот функционал.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика