41 lines
1.1 KiB
C++
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 };
|
|
}
|