chore: make renderer texture a little bit cleaner and fix srv creation in renderer core because backbuffer with DXGI_SWAP_EFFECT_DISCARD doesnt support D3D11_BIND_SHADER_RESOURCE
This commit is contained in:
1 parent
362d185289
commit
9cd1f647c3
2 files changed
+14
-12
No files matched your search
@@ -359,7 +359,15 @@ void Renderer::Initialise(ID3D11Device *pDevice, IDXGISwapChain *pSwapChain)
|
|||||||
backBufferSampleCount = backDesc.SampleDesc.Count;
|
backBufferSampleCount = backDesc.SampleDesc.Count;
|
||||||
backBufferSampleQuality = backDesc.SampleDesc.Quality;
|
backBufferSampleQuality = backDesc.SampleDesc.Quality;
|
||||||
m_pDevice->CreateRenderTargetView(backBuffer, nullptr, &renderTargetView);
|
m_pDevice->CreateRenderTargetView(backBuffer, nullptr, &renderTargetView);
|
||||||
m_pDevice->CreateShaderResourceView(backBuffer, nullptr, &renderTargetShaderResourceView);
|
|
||||||
|
D3D11_TEXTURE2D_DESC srvDesc = backDesc;
|
||||||
|
srvDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
|
||||||
|
srvDesc.MiscFlags = 0;
|
||||||
|
ID3D11Texture2D *srvTexture = nullptr;
|
||||||
|
m_pDevice->CreateTexture2D(&srvDesc, nullptr, &srvTexture);
|
||||||
|
m_pDevice->CreateShaderResourceView(srvTexture, nullptr, &renderTargetShaderResourceView);
|
||||||
|
|
||||||
|
srvTexture->Release();
|
||||||
backBuffer->Release();
|
backBuffer->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ int user_write_data_bytes_written()
|
|||||||
|
|
||||||
void user_write_data(png_struct_def* png_ptr, unsigned char* data, size_t length)
|
void user_write_data(png_struct_def* png_ptr, unsigned char* data, size_t length)
|
||||||
{
|
{
|
||||||
int canWrite = (int)((unsigned char*)dataEnd - (unsigned char*)dataCurr);
|
int canWrite = (int)(dataEnd - dataCurr);
|
||||||
if ((int)length < canWrite)
|
if ((int)length < canWrite)
|
||||||
canWrite = (int)length;
|
canWrite = (int)length;
|
||||||
memcpy(dataCurr, data, canWrite);
|
memcpy(dataCurr, data, canWrite);
|
||||||
@@ -113,7 +113,7 @@ void Renderer::TextureData(int width, int height, void* data, int level, C4JRend
|
|||||||
desc.Height = height;
|
desc.Height = height;
|
||||||
desc.MipLevels = m_textures[idx].mipLevels;
|
desc.MipLevels = m_textures[idx].mipLevels;
|
||||||
desc.ArraySize = 1;
|
desc.ArraySize = 1;
|
||||||
desc.Format = (DXGI_FORMAT)textureFormats[format];
|
desc.Format = textureFormats[format];
|
||||||
desc.SampleDesc.Count = 1;
|
desc.SampleDesc.Count = 1;
|
||||||
desc.SampleDesc.Quality = 0;
|
desc.SampleDesc.Quality = 0;
|
||||||
desc.Usage = D3D11_USAGE_DEFAULT;
|
desc.Usage = D3D11_USAGE_DEFAULT;
|
||||||
@@ -121,18 +121,12 @@ void Renderer::TextureData(int width, int height, void* data, int level, C4JRend
|
|||||||
desc.CPUAccessFlags = 0;
|
desc.CPUAccessFlags = 0;
|
||||||
desc.MiscFlags = 0;
|
desc.MiscFlags = 0;
|
||||||
|
|
||||||
m_pDevice->CreateTexture2D(&desc, NULL, (ID3D11Texture2D**)&m_textures[idx].texture);
|
m_pDevice->CreateTexture2D(&desc, NULL, &m_textures[idx].texture);
|
||||||
m_pDevice->CreateShaderResourceView(m_textures[idx].texture, NULL, &m_textures[idx].view);
|
m_pDevice->CreateShaderResourceView(m_textures[idx].texture, NULL, &m_textures[idx].view);
|
||||||
}
|
}
|
||||||
|
|
||||||
c.m_pDeviceContext->UpdateSubresource(
|
c.m_pDeviceContext->UpdateSubresource(m_textures[idx].texture, level, NULL,
|
||||||
m_textures[idx].texture,
|
data, width * 4, width * height * 4);
|
||||||
level,
|
|
||||||
NULL,
|
|
||||||
data,
|
|
||||||
width * 4,
|
|
||||||
width * height * 4
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::TextureDataUpdate(int xoffset, int yoffset, int width, int height, void* data, int level)
|
void Renderer::TextureDataUpdate(int xoffset, int yoffset, int width, int height, void* data, int level)
|
||||||
|
|||||||
Reference in new issue
Block a user