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

А поговорить за DirectX ?

Страницы: 1 2 37 8 Следующая »
#0
9:26, 4 апр. 2018

Кто-нибудь понимает, почему везде призывают писать код абстрактно и нзезависимо от API, но сами разработчики API , а конкретно Microsoft, с их : DX9; DX10; DX11; DX12; каждый раз делают новые (обозначающие и выполняющие одно и то же, но с другими именами ) константы и функции API?

Почему нельзя было сделать API, например, с названием DirectX, но без всяких индексов?  И сделать его так, чтобы функционал расширялся, скорость  работы API и удобство разработчиков увеличивались , но при этом, сам API полностью НЕ изменялся для разработчика на этом API, а лишь дополнялся новыми функциями и "плюшками" ?


#1
9:27, 4 апр. 2018

bykabak
> И сделать его так, чтобы функционал расширялся
Уже есть такое апи. OpenGL-ем его назвали.

#2
9:30, 4 апр. 2018

bykabak
> Почему нельзя было сделать API, например, с названием DirectX, но без всяких
> индексов?  И сделать его так, чтобы функционал расширялся, скорость  работы API
> и удобство разработчиков увеличивались , но при этом, сам API полностью НЕ
> изменялся для разработчика на этом API, а лишь дополнялся новыми функциями и
> "плюшками" ?
Видимо, это для того, чтобы не тащить груз устаревшего, например, FFP.
bykabak
> Почему нельзя было сделать API, например, с названием DirectX, но без всяких
> индексов?
Примерно так было до DX7.

#3
10:04, 4 апр. 2018

Зачем в DX12 ввели эти разные кучи памяти с разными типами доступа D3D12_RESOURCE_HEAP_TIER ? Чем это удобно ?

Не пойму...  Любые данные - это просто место в памяти определённого размера. Почему нельзя дать доступ ко всей видеопамяти и чтобы программист сам размещал свои ресурсы в этом огромном HEAP, и сам же манипулировал с нужными данными в нужном куске памяти так, как ему вздумается ?

Почему идёт этот "шовинизм" с разделением RT от простых текстур ? 

Почему нельзя один и тот же ( ЛЮБОЙ ) участок памяти сделать и RT и UAV и просто текстурой и буфером ?

хотели же гибкости дать программистам на их API...

#4
10:30, 4 апр. 2018

MrShoor
> > И сделать его так, чтобы функционал расширялся
> Уже есть такое апи. OpenGL-ем его назвали.

Ишь, ты... DX убогий получается?

Mikle
> Видимо, это для того, чтобы не тащить груз устаревшего, например, FFP.

Это чтобы бабла рубитьна продажи новых ос :)

#5
10:39, 4 апр. 2018

innuendo
> чтобы бабла рубитьна продажи новых ос
Одно другому не мешает. До Висты у них не было проблем с желанием пользователей переходить на новую ОС, и они обновляли DX, иногда избавляясь от устаревшего, а иногда просто переименовывая сущности потому, что так действительно правильнее, например, в DX8 метод SetVertexShader применялся и для задания флагов FVF, в DX9 добавили SetFVF. В DX9 от SetTextureStageState отделили SetSamplerState, тем самым отделив FVF текстурирование, которые несовместимо с шейдерами, от настроек сэмплера, которое применяется вместе с шейдерами.
А совместимостью со старыми ОС не жертвовали раньше времени, DX8 ставился на 95-ю винду, DX9 на 98-ю, хотя на момент его возникновения уже имелись Me, 2k и XP.

#6
11:37, 4 апр. 2018

bykabak
> Зачем в DX12 ввели эти разные кучи памяти с разными типами доступа
> D3D12_RESOURCE_HEAP_TIER ? Чем это удобно ?

вендорные фичи ?

Mikle
> DX8 метод SetVertexShader применялся и для задания флагов FVF, в DX9 добавили
> SetFVF. В DX9 от SetTextureStageState отделили SetSamplerState, тем самым
> отделив FVF текстурирование, которые несовместимо с шейдерами, от настроек
> сэмплера, которое применяется вместе с

а кто мешал заранее всё продумать ? :)

Тем не менее, про DX10 и 12 ты же согласен про получение баблосов ?

#7
11:48, 4 апр. 2018

MrShoor
> bykabak
> > И сделать его так, чтобы функционал расширялся
> Уже есть такое апи. OpenGL-ем его назвали.
У меня такое подозрение, что OpenGL немножко умирает.

#8
12:26, 4 апр. 2018

MikeNew,

Не факт. И почему умирает ?  - Причина в универсальности API от версии к версии ?

innuendo,

D3D12_HEAP_FLAGS - что за "шовинизм" опять ?  Даёте гибкость, так давайте.  Пусть у разработчика голова болит, что он и как он хранит, и как использует.

Одно и то же разными названиями разделяют от версии к версии. C DX10 началось про буферы, и поехало с префиксами DX10 , DX11 , DX12

#9
13:29, 4 апр. 2018

bykabak
> Кто-нибудь понимает, почему везде призывают писать код абстрактно и нзезависимо
> от API, но сами разработчики API , а конкретно Microsoft, с их : DX9; DX10;
> DX11; DX12; каждый раз делают новые (обозначающие и выполняющие одно и то же,
> но с другими именами ) константы и функции API?
Потому что графические API подгоняют для максимизации эффективности работы с видеокартой. Видеокарты меняются - появляются более оптимальные способы достичь того же результата - GAPI предоставляет доступ к новому способу. В OpenGL compatibility profile старые способы реализуют по-новому для новых карт; в DX устаревшие технологии убирают - если взялся работать через DX12, будь добр работать через DX12, а не через DX9, потому что если хочется работать через DX9 - подключай DX9 и работай на нём, а DX12 пусть останется в покое.

Абстракция и независимость кода - это задача игрового движка. Если хочешь, чтобы на всех DX было всё одинаково - бери какого-нибудь огра и пили на нём.

#10
13:36, 4 апр. 2018

bykabak
> Пусть у разработчика голова болит, что он и как он хранит, и как использует.

нет-нет, вы же хотели доступ к железке, так получите!

#11
14:02, 4 апр. 2018

DX12 API ужасен, все эти ID3D12Device, ID3D12Device1, ID3D12Device2, ID3D12Device3 выглядят так, как будто в MS должность архитектора заняла уборщица туалета.

#12
14:02, 4 апр. 2018

bykabak
> азмещал свои ресурсы в этом огромном HEAP, и сам же манипулировал с нужными
> данными в нужном куске памяти так, как ему вздумается ?
Потому что есть области памяти GPU, которые CPU не видит и наоборот, ну так документация по VulkanAPI говорит. Так же отличается время доступа к этим участкам памяти. Про разделение Buffer и Texture, есть так же причины. Это связанно с архитектурой GPU можешь загуглить архитектуру видеокарт NVIDIA там как раз таки это описанно

#13
14:17, 4 апр. 2018

bykabak
> Почему нельзя было сделать API, например, с названием DirectX, но без всяких индексов?
Без мазы.
DirectX API в корне перерабатывается от версии к версии.

#14
14:38, 4 апр. 2018

IBets, Prolen,

Про аппаратный доступ к данным всё понятно.  Я про реализацию API упаравления этими данными...  Его можно было с DX10 версии не менять, а лишь добавлять параметры инициализации нужной DX версии и упростить работу с ресурсами - памятью. А они только усложнили работу с ресурсами в DX12 и изменили названия своих констант, вместо добавления к старым константам новых - расширяющих возможности. Ну ввели вы очередь для GPU новой функцией рендера - классно ! Отвязали работу GPU от ожиданий CPU  - Здорово !  API глобальный зачем менять префиксами новыми иногда со старым смыслом ?

Старое они как раз не выкидывают.  Пожалуйтса, создавай CreateDevice с DX9_3 и всё у тебя работает по правилам DX9.  Поэтому, и не ясно зачем так менять API для пользователей.

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

Тема в архиве.