aorii/src/renderer/backend/dx/dx_texture.cpp
2024-10-15 18:10:40 +08:00

41 lines
1.1 KiB
C++

#include "dx_texture.h"
#include "dx_renderer.h"
dx_texture::dx_texture(ID3D11Texture2D* texture) { m_texture = texture; }
dx_texture::~dx_texture() {
// 如果是Debug模式, 检查m_data是否被释放
#if defined(DEBUG)
assert(!m_data);
#endif
free(m_data);
}
void* dx_texture::lock() {
D3D11_TEXTURE2D_DESC desc;
m_texture->GetDesc(&desc);
m_data = new char[desc.Width * desc.Height * 4];
return m_data;
}
void dx_texture::unlock() {
// D3D11_TEXTURE2D_DESC desc;
// m_texture->GetDesc(&desc);
// D3D11_MAPPED_SUBRESOURCE mappedResource;
// auto context = dx_backend::get_instance();
// context->Map(m_texture.get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
// memcpy(mappedResource.pData, m_data, desc.Width * desc.Height * 4);
// context->Unmap(m_texture.get(), 0);
// delete[] m_data;
// m_data = nullptr;
}
bool dx_texture::resize(const Eigen::Vector2i& size) { return true; }
Eigen::Vector2i dx_texture::size() {
D3D11_TEXTURE2D_DESC desc;
m_texture->GetDesc(&desc);
return { desc.Width, desc.Height };
}