Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21

Анонсирован DirectX 12

07.03.2014, 19:36. Показов 4752. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
http://blogs.msdn.com/b/directx/p/directx12.aspx

Microsoft представит новую версию DirectX 20 марта на конференции Game Developer Conference 2014 в Сан-Франциско. О DirectX 12 расскажет менеджер Microsoft по разработке графики Анудж Госалия. В тот же день, но несколько позже, ведущий разработчик подразделения Windows Graphics Макс Макмаллен проведет презентацию Direct3D Futures, на которой объяснит, как изменения в Direct3D позволят сделать игры нового поколения более быстрыми. Среди партнеров данного мероприятия значатся компании AMD, Intel, NVIDIA и Qualcomm, которые, вероятно, обеспечат поддержку следующей версии DirectX в своих новых продуктах. Какие операционные системы смогут поддерживать новую версию API от Microsoft, пока не известно.
Думаю DirectX 12 будет доступен только на Windows 9 (как это было с DirectX 11.1 для Windows 8 и DirectX 11.2 для Windows 8.1). По поводу видеокарт, скорее всего у NVIDIA будет новая серия (т.е. GTX7xx не будут поддерживать 12 версию), а с AMD пока что не ясно (возможно их новая архитектура GCN (HD7xxx и Rx 2xx) будет поддерживать DirectX 12).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2014, 19:36
Ответы с готовыми решениями:

Реализовать DirectX. Или разобраться в том, как программисту наладить работу DirectX у клиента под Windows
Здравствуйте Программисты. Заплачу за решение моего вопроса! 25-50 тыс. рублей. 50 тыс. рублей заплачу, если полностью решите мой...

Если у меня видяха поддерживает DirectX 10, то пойдут ли те игры, которые поддерживают DirectX 9?
Если у меня видяха поддерживает DirectX 10, то пойдут ли те игры, которые поддерживают DirectX 9?

XNA является дополнением DirectX или это полноценная альтернатива DirectX не зависящая от него
Предлагаю в этой теме задавать общие вопросы по XNA. Может вопросы покажутся глупыми, но все же: 1. Работать с XNA можно только в...

21
Заблокирован
10.03.2014, 11:26
А про AMD Mantle ничего не слышно? Когда его можно будет откуда - то скачать?
0
 Аватар для SirBeer
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 3
10.03.2014, 11:48
THE--MASTER, насколько мне известно, Mantle загружается с драйверами CCC (Catalyst Control Center). На счет SDK(API) я не знаю, скорее всего он будет пока за занавесом. ИМХО они доделывают API. Ссылка на информацию: http://devgurus.amd.com/thread/168233
0
Заблокирован
10.03.2014, 12:11
Цитата Сообщение от SirBeer Посмотреть сообщение
На счет SDK(API) я не знаю
Ну да, именно API конечно же меня и интересовало ... Скоро стартую разработку крупного коммерческого игрового проекта... Вот и терзают меня сомнения ... DirectX12 vs AMD Mantle ...
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
10.03.2014, 18:39  [ТС]
Цитата Сообщение от THE--MASTER Посмотреть сообщение
А про AMD Mantle ничего не слышно? Когда его можно будет откуда - то скачать?
пока что это проприетарное ПО, но некоторые девелоперы из AMD в твиттере давали информацию, что SDK будет доступен ближе к концу лета - начало осени (август\сентябрь).

Не по теме:

жду когда в Thief активируют mantle, надоело уже battlefield 4 ковырять :)



скорее всего и dx12 раньше глубокой осени не увидим. По предположениям 12 версия будет доступна лишь для ранней сборки windows 9, а у ms выпуск новых ОС это 9-22 октября через каждые 3 года.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
23.03.2014, 22:55  [ТС]
итак, кое что начинает проясняться
Все видеокарты NVIDIA класса DirectX 11, все ускорители AMD на базе архитектуры GCN, а также графика Iris и Iris Pro в процессорах Intel Haswell будут поддерживать DirectX 12.
Microsoft утверждает, что в целом нагрузка на центральный процессор благодаря новому API будет снижена вдвое, причём задачи будут гораздо лучше распределяться между ядрами CPU.
Масштабируемость производительности от прироста ядер процессора будет почти линейной, производительность GPU тоже возрастёт благодаря принципиальному снижению зависимости от CPU по количеству запросов на отрисовку и прямому доступу к графике.
В целом, Microsoft по сути рассказала об основных принципах нового API, которые напоминают те, что были положены AMD в основу собственного низкоуровневого API Mantle.

Часть новых графических функций DirectX 12 не будет доступна на GPU класса DX11.
DirectX 12 принесёт поддержку более низкоуровневого доступа к оборудованию для современных графических ускорителей (впрочем, разработчики вольны не использовать возможности более прямого доступа к GPU, да и обратная совместимость с DirectX 11 останется).
Наряду с низкоуровневым режимом работы DirectX 12 принесёт ещё и поддержку совершенно новых графических функций, причём они будут требовать появления ускорителей нового поколения.

Тем не менее, появление поддержки низкоуровневой работы с оборудованием наверняка является одним из ключевых новшеств DirectX 12, и большинство владельцев современных видеокарт без всяких обновлений смогут использовать преимущества игр поколения DirectX 12, выход первых из которых ожидается ближе к концу 2015 года.
В качестве демонстрации возможностей DirectX 12 компания Microsoft выбрала известный эксклюзив для Xbox One — гоночный симулятор Forza Motorsport 5 от Turn 10, который исполнялся на ПК с видеокартой NVIDIA GeForce Titan Black на фиксированной частоте 60 кадров/с. Стоит отметить, что, по словам NVIDIA, для осуществления демонстрации её командой был предоставлен рабочий драйвер с поддержкой DirectX 12. Вполне возможно, это означает выход в перспективе Forza 5 на ПК.
0
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
26.03.2014, 13:38
THE--MASTER, не думаю, что новое API что-то выиграет.
Тем более как говорится: все новое - аукцион.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
30.01.2015, 00:40  [ТС]
ну чтож, вот и появился DirectX 12 в составе Windows 10 TP (увы, но пока что без либ и хейдеров)
библиотека D3D12.dll на данный момент имеет не так много функций
D3D12CoreCreateLayeredDevice
D3D12CoreGetLayeredDeviceSize
D3D12CoreRegisterLayers
D3D12CreateDevice
D3D12CreateRootSignatureDeserializer
D3D12SerializeRootSignature
D3DPerformance_BeginEvent
D3DPerformance_EndEvent
D3DPerformance_GetStatus
D3DPerformance_SetMarker
и естественно всех нас интересует D3D12CreateDevice - а именно инициализация нового API на GPU
вот её прототип
C
1
2
3
4
5
6
7
8
int __thiscall D3D12CreateDevice(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8)
{
  int (__stdcall *v8)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // esi@1
 
  v8 = (int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))sub_1001894D(this);
  off_10073250(v8);
  return v8(a2, a3, a4, a5, a6, a7, a8);
}
функция принимает 8 параметров. Что из ни есть что ещё предстоит выяснить.

также, в библиотеке отсутствует параметр featurelevel - D3D_FEATURE_LEVEL_12_0 (впрочем и для DirectX 11.2 параметр D3D_FEATURE_LEVEL_11_2 так и не был добавлен)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
if ( ArgList != 37120
    && ArgList != 37376
    && ArgList != 37632
    && ArgList != 40960
    && ArgList != 41216
    && ArgList != 45056
    && ArgList != 45312 )
  {
    sub_1001725F(
      (int)&hLibModule,
      0,
      "D3D12CreateDevice: Unrecognized D3D_FEATURE_LEVEL (%#x) for MinimumFeatureLevel.",
      ArgList);
LABEL_25:
    v8 = -2147024809;
LABEL_26:
    if ( a7 )
    {
      v9 = *(_DWORD *)a7;
      if ( *(_DWORD *)a7 )
      {
        v10 = *(_DWORD *)a7;
        v11 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v9 + 8);
        off_10073250(*(_DWORD *)(*(_DWORD *)v9 + 8));
        v11(v10);
        *(_DWORD *)a7 = 0;
      }
    }
    goto LABEL_29;
  }
не трудно догадаться, что в переменной ArgList содержаться
D3D_FEATURE_LEVEL_9_1
D3D_FEATURE_LEVEL_9_2
D3D_FEATURE_LEVEL_9_3
D3D_FEATURE_LEVEL_10_0
D3D_FEATURE_LEVEL_10_1
D3D_FEATURE_LEVEL_11_0
D3D_FEATURE_LEVEL_11_1

также нашёл кучу всяких #define, сообщений и прочего. Будет время, попробую написать функцию инициализации.
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
28.02.2015, 21:55  [ТС]
D3D12CreateDevice функция
C++
1
2
3
4
5
6
7
8
9
HRESULT D3D12CreateDevice(
_In_ IDXGIAdapter *,
_In_ D3D_DRIVER_TYPE,
_In_ D3D12_CREATE_DEVICE_FLAG,
D3D_FEATURE_LEVEL,
_In_ UINT,
_GUID const &,
_Out_ void **
);
IDA показывает именно такой состав функции (почему 7 аргументов не знаю, хотя сам прототип функции содержит 8).
атрибуты аргументов D3D_FEATURE_LEVEL и _GUID const& пока не знаю (аналогию приводил по типам функции D3D11CreateDevice).
так же не понятно что принимает UINT - либо число элементов в pFeatureLevels, либо D3D12_SDK_VERSION (значение этого параметра пока не нашёл).
в последнем аргументе void** скорее всего ID3D12DeviceContext (где должен быть ID3D12Device пока не знаю, да и аргумент _GUID const& тоже не совсем понятен).


ну а дальше стандарт
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#define D3D12_SDK_VERSION 0 // value unknown
 
typedef enum D3D12_CREATE_DEVICE_FLAG
{
    D3D12_CREATE_DEVICE_SINGLETHREADED = 0x1,
    D3D12_CREATE_DEVICE_DEBUG = 0x2,
    D3D12_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
    D3D12_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
    D3D12_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
    D3D12_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80
} D3D12_CREATE_DEVICE_FLAG;
 
typedef enum D3D_DRIVER_TYPE
{ 
  D3D_DRIVER_TYPE_UNKNOWN = 0,
  D3D_DRIVER_TYPE_HARDWARE = (D3D_DRIVER_TYPE_UNKNOWN + 1),
  D3D_DRIVER_TYPE_REFERENCE = (D3D_DRIVER_TYPE_HARDWARE + 1),
  D3D_DRIVER_TYPE_NULL = (D3D_DRIVER_TYPE_REFERENCE + 1),
  D3D_DRIVER_TYPE_SOFTWARE = (D3D_DRIVER_TYPE_NULL + 1),
  D3D_DRIVER_TYPE_WARP = (D3D_DRIVER_TYPE_SOFTWARE + 1)
} D3D_DRIVER_TYPE;
 
typedef enum D3D_FEATURE_LEVEL
{ 
  D3D_FEATURE_LEVEL_9_1 = 0x9100,
  D3D_FEATURE_LEVEL_9_2 = 0x9200,
  D3D_FEATURE_LEVEL_9_3 = 0x9300,
  D3D_FEATURE_LEVEL_10_0 = 0xA000,
  D3D_FEATURE_LEVEL_10_1 = 0xA100,
  D3D_FEATURE_LEVEL_11_0 = 0xB000,
  D3D_FEATURE_LEVEL_11_1 = 0xB100,
  //D3D_FEATURE_LEVEL_11_2 = 0xB200,
  //D3D_FEATURE_LEVEL_12_0 = 0xC000
} D3D_FEATURE_LEVEL;
чуть позже выложу перечисление DXGI_FORMAT (нужно посмотреть есть ли отличия от предыдущей версии).

Добавлено через 5 часов 39 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
typedef enum DXGI_FORMAT
{
    DXGI_FORMAT_UNKNOWN,
    DXGI_FORMAT_R32G32B32A32_TYPELESS,
    DXGI_FORMAT_R32G32B32A32_FLOAT,
    DXGI_FORMAT_R32G32B32A32_UINT,
    DXGI_FORMAT_R32G32B32A32_SINT,
    DXGI_FORMAT_R32G32B32_TYPELESS,
    DXGI_FORMAT_R32G32B32_FLOAT,
    DXGI_FORMAT_R32G32B32_UINT,
    DXGI_FORMAT_R32G32B32_SINT,
    DXGI_FORMAT_R16G16B16A16_TYPELESS,
    DXGI_FORMAT_R16G16B16A16_FLOAT,
    DXGI_FORMAT_R16G16B16A16_UNORM,
    DXGI_FORMAT_R16G16B16A16_UINT,
    DXGI_FORMAT_R16G16B16A16_SNORM,
    DXGI_FORMAT_R16G16B16A16_SINT,
    DXGI_FORMAT_R32G32_TYPELESS,
    DXGI_FORMAT_R32G32_FLOAT,
    DXGI_FORMAT_R32G32_UINT,
    DXGI_FORMAT_R32G32_SINT,
    DXGI_FORMAT_R32G8X24_TYPELESS,
    DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
    DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
    DXGI_FORMAT_X32_TYPELESS_G8X24_UINT,
    DXGI_FORMAT_R10G10B10A2_TYPELESS,
    DXGI_FORMAT_R10G10B10A2_UNORM,
    DXGI_FORMAT_R10G10B10A2_UINT,
    DXGI_FORMAT_R11G11B10_FLOAT,
    DXGI_FORMAT_R8G8B8A8_TYPELESS,
    DXGI_FORMAT_R8G8B8A8_UNORM,
    DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
    DXGI_FORMAT_R8G8B8A8_UINT,
    DXGI_FORMAT_R8G8B8A8_SNORM,
    DXGI_FORMAT_R8G8B8A8_SINT,
    DXGI_FORMAT_R16G16_TYPELESS,
    DXGI_FORMAT_R16G16_FLOAT,
    DXGI_FORMAT_R16G16_UNORM,
    DXGI_FORMAT_R16G16_UINT,
    DXGI_FORMAT_R16G16_SNORM,
    DXGI_FORMAT_R16G16_SINT,
    DXGI_FORMAT_R32_TYPELESS,
    DXGI_FORMAT_D32_FLOAT,
    DXGI_FORMAT_R32_FLOAT,
    DXGI_FORMAT_R32_UINT,
    DXGI_FORMAT_R32_SINT,
    DXGI_FORMAT_R24G8_TYPELESS,
    DXGI_FORMAT_D24_UNORM_S8_UINT,
    DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
    DXGI_FORMAT_X24_TYPELESS_G8_UINT,
    DXGI_FORMAT_R8G8_TYPELESS,
    DXGI_FORMAT_R8G8_UNORM,
    DXGI_FORMAT_R8G8_UINT,
    DXGI_FORMAT_R8G8_SNORM,
    DXGI_FORMAT_R8G8_SINT,
    DXGI_FORMAT_R16_TYPELESS,
    DXGI_FORMAT_R16_FLOAT,
    DXGI_FORMAT_D16_UNORM,
    DXGI_FORMAT_R16_UNORM,
    DXGI_FORMAT_R16_UINT,
    DXGI_FORMAT_R16_SNORM,
    DXGI_FORMAT_R16_SINT,
    DXGI_FORMAT_R8_TYPELESS,
    DXGI_FORMAT_R8_UNORM,
    DXGI_FORMAT_R8_UINT,
    DXGI_FORMAT_R8_SNORM,
    DXGI_FORMAT_R8_SINT,
    DXGI_FORMAT_A8_UNORM,
    DXGI_FORMAT_R1_UNORM,
    DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
    DXGI_FORMAT_R8G8_B8G8_UNORM,
    DXGI_FORMAT_G8R8_G8B8_UNORM,
    DXGI_FORMAT_BC1_TYPELESS,
    DXGI_FORMAT_BC1_UNORM,
    DXGI_FORMAT_BC1_UNORM_SRGB,
    DXGI_FORMAT_BC2_TYPELESS,
    DXGI_FORMAT_BC2_UNORM,
    DXGI_FORMAT_BC2_UNORM_SRGB,
    DXGI_FORMAT_BC3_TYPELESS,
    DXGI_FORMAT_BC3_UNORM,
    DXGI_FORMAT_BC3_UNORM_SRGB,
    DXGI_FORMAT_BC4_TYPELESS,
    DXGI_FORMAT_BC4_UNORM,
    DXGI_FORMAT_BC4_SNORM,
    DXGI_FORMAT_BC5_TYPELESS,
    DXGI_FORMAT_BC5_UNORM,
    DXGI_FORMAT_BC5_SNORM,
    DXGI_FORMAT_B5G6R5_UNORM,
    DXGI_FORMAT_B5G5R5A1_UNORM,
    DXGI_FORMAT_B8G8R8A8_UNORM,
    DXGI_FORMAT_B8G8R8X8_UNORM,
    DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM,
    DXGI_FORMAT_B8G8R8A8_TYPELESS,
    DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
    DXGI_FORMAT_B8G8R8X8_TYPELESS,
    DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
    DXGI_FORMAT_BC6H_TYPELESS,
    DXGI_FORMAT_BC6H_UF16,
    DXGI_FORMAT_BC6H_SF16,
    DXGI_FORMAT_BC7_TYPELESS,
    DXGI_FORMAT_BC7_UNORM,
    DXGI_FORMAT_BC7_UNORM_SRGB,
    DXGI_FORMAT_AYUV,
    DXGI_FORMAT_Y410,
    DXGI_FORMAT_Y416,
    DXGI_FORMAT_NV12,
    DXGI_FORMAT_P010,
    DXGI_FORMAT_P016,
    DXGI_FORMAT_420_OPAQUE,
    DXGI_FORMAT_YUY2,
    DXGI_FORMAT_Y210,
    DXGI_FORMAT_Y216,
    DXGI_FORMAT_NV11,
    DXGI_FORMAT_AI44,
    DXGI_FORMAT_IA44,
    DXGI_FORMAT_P8,
    DXGI_FORMAT_A8P8,
    DXGI_FORMAT_B4G4R4A4_UNORM,
    DXGI_FORMAT_R10G10B10_7E3_A2_FLOAT,
    DXGI_FORMAT_R10G10B10_6E4_A2_FLOAT,
    DXGI_FORMAT_D16_UNORM_S8_UINT,
    DXGI_FORMAT_R16_UNORM_X8_TYPELESS,
    DXGI_FORMAT_X16_TYPELESS_G8_UINT,
    DXGI_FORMAT_B5G5R5X1_UNORM,
    DXGI_FORMAT_B4G4R4X4_UNORM,
    DXGI_FORMAT_L8_UNORM
} DXGI_FORMAT;
значения присваивать не стал, они и так автоматом enum'a определились.
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
26.03.2015, 14:03  [ТС]
Цитата Сообщение от _lunar_ Посмотреть сообщение
D3D12_SDK_VERSION (значение этого параметра пока не нашёл)
совсем забыл, уже давно нашёл значение D3D12_SDK_VERSION
C++
1
2
3
#define D3D10_SDK_VERSION 29
#define D3D11_SDK_VERSION 7
#define D3D12_SDK_VERSION 18 // push 12h
и ещё кое-что не анонсированное - DirectX 12_Tier 3
Пока DirectX 12 поддерживается наборами возможностей следующих уровней: 11_0, 11_1, 11_2 и ещё не анонсированными 11_3 и 12_0, причём под Tier 3 явно имеется в виду последний уровень 12_0.
Миниатюры
Анонсирован DirectX 12  
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
28.03.2015, 19:26  [ТС]
ну всё, Microsoft начал обновлять MSDN https://msdn.microsoft.com/en-... 70456.aspx
ну и сама D3D12CreateDevice https://msdn.microsoft.com/en-... 70336.aspx (я прям почти полностью переопределил эту функцию, занятно)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#define D3D12_SDK_VERSION 18
 
typedef enum D3D_FEATURE_LEVEL
{
    D3D_FEATURE_LEVEL_9_0 = 0x9000,
    D3D_FEATURE_LEVEL_9_1 = 0x9100,
    D3D_FEATURE_LEVEL_9_2 = 0x9200,
    D3D_FEATURE_LEVEL_9_3 = 0x9300,
    D3D_FEATURE_LEVEL_10_0 = 0xA000,
    D3D_FEATURE_LEVEL_10_1 = 0xA100,
    D3D_FEATURE_LEVEL_11_0 = 0xB000,
    D3D_FEATURE_LEVEL_11_1 = 0xB100,
    D3D_FEATURE_LEVEL_11_2 = 0xB200,
    D3D_FEATURE_LEVEL_11_3 = 0xB300,
    D3D_FEATURE_LEVEL_12_0 = 0xC000
} D3D_FEATURE_LEVEL;
 
typedef enum D3D12_CREATE_DEVICE_FLAG
{ 
  D3D12_CREATE_DEVICE_NONE                                           = 0,
  D3D12_CREATE_DEVICE_DEBUG                                          = 0x1,
  D3D12_CREATE_DEVICE_SHADER_DEBUGGING                               = 0x2,
  D3D12_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY  = 0x4
} D3D12_CREATE_DEVICE_FLAG;
 
/*When creating a device from an existing adapter (i.e. pAdapter is non-NULL), DriverType must be D3D_DRIVER_TYPE_UNKNOWN.
When creating a device without an adapter (i.e. pAdapter is NULL), the DriverType designates the type of adapter to use;
and must not be D3D_DRIVER_TYPE_UNKNOWN. D3D12 only supports hardware and WARP devices.*/
typedef enum D3D_DRIVER_TYPE
{ 
  D3D_DRIVER_TYPE_UNKNOWN    = 0,
  D3D_DRIVER_TYPE_HARDWARE   = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ),
  D3D_DRIVER_TYPE_REFERENCE  = ( D3D_DRIVER_TYPE_HARDWARE + 1 ),
  D3D_DRIVER_TYPE_NULL       = ( D3D_DRIVER_TYPE_REFERENCE + 1 ),
  D3D_DRIVER_TYPE_SOFTWARE   = ( D3D_DRIVER_TYPE_NULL + 1 ),
  D3D_DRIVER_TYPE_WARP       = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
} D3D_DRIVER_TYPE;
 
typedef enum D3D12_FEATURE
{ 
  D3D12_FEATURE_D3D12_OPTIONS               = 0,
  D3D12_FEATURE_ARCHITECTURE                = ( D3D12_FEATURE_D3D12_OPTIONS + 1 ),
  D3D12_FEATURE_FEATURE_LEVELS              = ( D3D12_FEATURE_ARCHITECTURE + 1 ),
  D3D12_FEATURE_FORMAT_SUPPORT              = ( D3D12_FEATURE_FEATURE_LEVELS + 1 ),
  D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS  = ( D3D12_FEATURE_FORMAT_SUPPORT + 1 )
} D3D12_FEATURE;
 
typedef struct ID3D12Device : ID3D12Object
{
    HRESULT CheckFeatureSupport(D3D12_FEATURE Feature, _Inout_ void *pFeatureSupportData, UINT FeatureSupportDataSize);
    HRESULT OpenSharedHandle(_In_ HANDLE NTHandle, REFIID riid, _Out_opt_ void **ppvObj);
    HRESULT SetStablePowerState(BOOL Enable);
       // and more...
} ID3D12Device;
ID3D12Device *device = nullptr;
 
typedef HRESULT(WINAPI *_D3D12CreateDevice)(
    _In_opt_ IDXGIAdapter *pAdapter,
    D3D_DRIVER_TYPE DriverType,
    D3D12_CREATE_DEVICE_FLAG Flags,
    D3D_FEATURE_LEVEL MinimumFeatureLevel,
    UINT SDKVersion,
    _In_ REFIID riid,
    _Out_opt_ ID3D12Device **ppDevice
    );
 
_D3D12CreateDevice D3D12CreateDevice;
 
D3D12CreateDevice(nullptr, D3D_DRIVER_TYPE_HARDWARE, D3D12_CREATE_DEVICE_DEBUG, D3D_FEATURE_LEVEL_12_0,
        D3D12_SDK_VERSION, __uuidof(ID3D12Device), &device);
1
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
02.04.2015, 22:24
Что там нового по рисованию текста в 3D ?
0
Заблокирован
06.04.2015, 13:18
Стоит ли сейчас начинать новый проект под DirectX.... Даже не знаю...
Куча новых осей появилось и как - то не модно уже их не поддерживать, думаю всё таки стоит перекидываться на OpenGL... (Qt + OpenGL )
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
06.04.2015, 19:47  [ТС]
Цитата Сообщение от VoodooPuppet Посмотреть сообщение
думаю всё таки стоит перекидываться на OpenGL
или дождаться Vulkan (OpenGL Next в перемешку с Mantle)
уже есть разговоры, что Vulkan имеет точно такие же функции как Mantle, к примеру
grCreateDevice (Mantle)
vrCreateDevice (Vulkan)

ну чтож, к 2015 году у нас есть 4 низкоуровневых API (ну точнее 3 - дальнейшая судьба Mantle остаётся под вопросом):
- Mantle (AMD совместно с DICE, продукция AMD на архитектуре GCN)
- Metal (Apple, продукция Apple на процессорах начиная с A7 на iOS8)
- DirectX 12 (Microsoft, не полная поддержка начиная с видеокарт NVIDIA 400 Series и видеокарт AMD на архитектуре GCN)
- Vulkan (Khronos Group совместно с Valve, поддержка скорее всего с NVIDIA 400 Series и видеокарт AMD на архитектуре GCN)
0
Заблокирован
06.04.2015, 20:09
Цитата Сообщение от _lunar_ Посмотреть сообщение
или дождаться Vulkan
Да, верно. В топку DirectX. Будем ждать извержения
Да и потом, судя по всему он будет максимально доступен для всех, в отличии от того же Mantle, который могут скачать только разработчики BattleField4
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
07.04.2015, 19:15  [ТС]
Цитата Сообщение от Sub_Zero Посмотреть сообщение
Mantle, который могут скачать только разработчики BattleField4
да нет, его "скачали" многие разработчики, а не только DICE (которые его кстати и разработали совместно с AMD). Для этого нужно просто подать заявку в раздел developer на сайте AMD, но естественно вы должны быть разрабом (с лицензиями и прочей лабудой).
0
Заблокирован
08.04.2015, 08:00
Цитата Сообщение от _lunar_ Посмотреть сообщение
(с лицензиями и прочей лабудой
вот и гвоздь в гроб мечты по изучению данного API
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
17.05.2015, 12:06  [ТС]
Microsoft снова изменила функцию D3D12CreateDevice, теперь в ней осталось всего 4 аргумента и выглядит она вот так
C++
1
2
3
4
5
6
HRESULT WINAPI D3D12CreateDevice(
  _In_opt_  IUnknown          *pAdapter,
            D3D_FEATURE_LEVEL MinimumFeatureLevel,
  _In_      REFIID            riid,
  _Out_opt_ void              **ppDevice
);
пытаюсь проинизиализировать устройство ID3D12Device и саму функцию (видеокарта AMD Radeon R9 280X, драйвер последний с Windows Update). Установил Windows 10 Pro x64 build 10074, Visual Studio 2015RC Enterprice и Windows SDK (в комплекте со студией), после которого пришли долгожданные d3d12.h и d3d12.lib
собственно код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <d3d12.h>
#include <wrl\client.h>
 
#pragma comment (lib, "d3d12.lib")
 
using namespace Microsoft::WRL;
 
ComPtr<ID3D12Device> device = nullptr;
 
int CALLBACK WinMain(HINSTANCE h1, HINSTANCE h2, LPSTR cmdline, int cmdshow)
{
    D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_12_0;
    HRESULT hr = D3D12CreateDevice(nullptr, featureLevel, __uuidof(ID3D12Device), &device);
 
    if (hr == S_OK) MessageBox(NULL, "DirectX 12 support", "Info", MB_ICONINFORMATION);
    else MessageBox(NULL, "DirectX 12 not support", "Error", MB_ICONERROR);
}
решил использовать умные указатели, без них функция D3D12CreateDevice выглядит немного по другому
C++
1
2
ID3D12Device *device = nullptr;
HRESULT hr = D3D12CreateDevice(nullptr, featureLevel, __uuidof(ID3D12Device), (void **)&device);
в общем ни в какую устройство не хочет инициализироваться, hr пишет
Указанный интерфейс устройства или уровень компонента не поддерживается в данной системе.
если кто-то может потестировать на R9 290 или GTX900 Series и отписаться о результатах буду признателен. В прикрепленных скомпилированная выше программа для Win32 и x64.
Вложения
Тип файла: 7z test.7z (7.0 Кб, 3 просмотров)
0
16 / 16 / 0
Регистрация: 13.11.2009
Сообщений: 69
23.07.2015, 12:16
Вот по Directx 12 нашел пример 3д кубика.
https://code.msdn.microsoft.co... e-ecb1779f
Но нужна Visual Studio 2015 для этого.
Как мелкософт достал своими новыми шиндами и студиями.
Пока сижу на Windows 7 64 bit. Жду Vulkan API. Как то лень ставить Windows 10.

Да Vulkan API сильно напоминает Мантле. Так как АМД отдали Мантле на растерзание Хроносу. А они пилят Vulkan API.
Потому будет много одинаковых функций Vulkan API.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.07.2015, 00:36  [ТС]
Цитата Сообщение от ronniko Посмотреть сообщение
Но нужна Visual Studio 2015 для этого.
не обязательно. Я и на VS2012 Express спокойно загнал хейдеры и либы от Windows SDK 10069 и писал программы с использованием d3d12.h, d3d12.lib и d3d12.dll. Дугой вопрос - так и не удалось заставить dx12 работать на ядре 6.3 из-за Windows API Sets либы api-ms-win-core-heap-l2-1-0.dll https://msdn.microsoft.com/en-... 02935.aspx (бросил и не стал дальше разрабатывать), хотя часть api в систему воткнул.
Миниатюры
Анонсирован DirectX 12  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2015, 00:36
Помогаю со студенческими работами здесь

Откат DirectX на более раннюю версию. Управление DirectX
Доброго времени суток. Как откатить DirectX11 до DirectX10 на Win 7 x64? А может существуют утилиты, заставляющие игру воспринимать...

Ошибка DirectX "Cannot instantiate directInput. (DirectX 8 required.)"
При запуске игр серии DayZ или Arma выдаёт такую ошибку: &quot;Cannot instantiate directInput. (DirectX 8 required.)&quot; ...

Подключение managed directx - Имя типа или пространства имен "DirectX" отсутствует в пространстве имен
Когда пишу using Microsoft.directx; выдаёт ошыбку Имя типа или пространства имен &quot;DirectX&quot; отсутствует в пространстве имен...

DirectX
Решил перейти к покорению DirectX пока написал код инициализации но он вадает ошибку x.obj : error LNK2019: ссылка на неразрешенный...

directx 10!
Кароч не знаю куда, написать напишу здесь!!! Кароч поставил винду7...сначало у мя был directx 10...в игры играл с ним!!! Потом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru