Я просто хочу знать Directx 12 API для создания текстуры из изображения.
Для DX11 это D3DX11CreateShaderResourceViewFromFile, а для DX9 это D3DXCreateTextureFromFileEx, а для DX12?
Сейчас все немного лучше. Microsoft переписала свой DDSTextureLoader для DX12 и выпустила его как часть своего MiniEngine на GitHub
https://github.com/Microsoft/DirectX-Graphics-Samples/blob/master/MiniEngine/Core/DDSTextureLoader.cpp
Вы также можете захотеть взглянуть на мою производную работу, которая предназначена для того, чтобы сделать использование DDSTextureLoader немного проще вне MiniEngine.
https://github.com/ClemensX/ShadedPath12/blob/master/ShadedPath12/ShadedPath12/DDSTextureLoader.cpp
Я использую этот загрузчик для всех моих текстурных файлов. Он очень хорошо разбирает формат файла DDS (DirectDrawSurface), включая mipmaps.
Там нет ни одного.
Direct3D 12 — это низкоуровневый API. очень API низкого уровня. Он не имеет вспомогательных функций, которые создают текстуры из цельного полотна только из имени файла. Если вы хотите создать текстуру, вы должны работать для нее. Вам нужно загрузить файл, выяснить, в каком формате он вам нужен, выделить для него память, спросив у системы, сколько памяти ему потребуется, а затем выполнить сложную последовательность шагов, чтобы перенести загруженное изображение в эту память.
Официальный «служебный заголовок» для Direct3D 12 d3dx12.h. Это встроенный заголовок, в котором нет DLL или статической библиотеки, поэтому предоставляемая функциональность ограничена истинными помощниками. Не имеет эквивалента D3DX11CreateShaderResourceViewFromFile
, Он не входит в состав Windows SDK, но предоставляется по лицензии MIT, и ожидается, что вы просто скопируете его в свой проект — он включен в различные шаблоны DirectX 12 Visual Studio, включая мой Direct3D игровые шаблоны.
Вы можете использовать DDSTextureLoader
а также WICTextureLoader
модули, представленные в Набор инструментов DirectX для DirectX 12 для некоторого готового к использованию загрузчика текстур для Direct3D 12. См. этот урок.
Стоит отметить, что D3DX9, D3DX10 и D3DX11 устарели и доступны только как часть устаревшего DirectX SDK для MSDN. Другими словами, вы не должны использовать
D3DX11CreateShaderResourceViewFromFile
для вашего кода Direct3D 11. Увидеть этот блог для полного списка замен D3DX9 / 10/11. TL; DR: использованиеDDSTextureLoader
а такжеWICTextureLoader
в Набор инструментов DirectX для DirectX 11.