45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#include "XCEngine/RHI/D3D12/D3D12ShaderResourceView.h"
|
|
|
|
namespace XCEngine {
|
|
namespace RHI {
|
|
|
|
D3D12ShaderResourceView::D3D12ShaderResourceView()
|
|
: m_handle({0})
|
|
, m_resource(nullptr) {
|
|
}
|
|
|
|
D3D12ShaderResourceView::~D3D12ShaderResourceView() {
|
|
Shutdown();
|
|
}
|
|
|
|
void D3D12ShaderResourceView::Initialize(ID3D12Device* device, ID3D12Resource* resource, const D3D12_SHADER_RESOURCE_VIEW_DESC* desc) {
|
|
m_resource = resource;
|
|
m_handle = {};
|
|
device->CreateShaderResourceView(resource, desc, m_handle);
|
|
}
|
|
|
|
void D3D12ShaderResourceView::InitializeAt(ID3D12Device* device, ID3D12Resource* resource, D3D12_CPU_DESCRIPTOR_HANDLE handle, const D3D12_SHADER_RESOURCE_VIEW_DESC* desc) {
|
|
m_resource = resource;
|
|
m_handle = handle;
|
|
device->CreateShaderResourceView(resource, desc, m_handle);
|
|
}
|
|
|
|
void D3D12ShaderResourceView::Shutdown() {
|
|
m_handle = {};
|
|
m_resource = nullptr;
|
|
}
|
|
|
|
D3D12_SHADER_RESOURCE_VIEW_DESC D3D12ShaderResourceView::CreateDesc(Format format, D3D12_SRV_DIMENSION dimension, uint32_t mipLevels) {
|
|
D3D12_SHADER_RESOURCE_VIEW_DESC desc = {};
|
|
desc.Format = ToD3D12(format);
|
|
desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
|
|
desc.ViewDimension = dimension;
|
|
if (dimension == D3D12_SRV_DIMENSION_TEXTURE2D) {
|
|
desc.Texture2D.MipLevels = mipLevels;
|
|
}
|
|
return desc;
|
|
}
|
|
|
|
} // namespace RHI
|
|
} // namespace XCEngine
|