mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-10-25 18:25:29 +00:00
Added clear texture API. (#3836)
This commit is contained in:
@@ -3722,6 +3722,31 @@ namespace bgfx
|
||||
}
|
||||
break;
|
||||
|
||||
case CommandBuffer::ClearTexture:
|
||||
{
|
||||
BGFX_PROFILER_SCOPE("ClearTexture", kColorResource);
|
||||
|
||||
TextureHandle handle;
|
||||
_cmdbuf.read(handle);
|
||||
|
||||
uint8_t mip;
|
||||
_cmdbuf.read(mip);
|
||||
|
||||
uint8_t numMips;
|
||||
_cmdbuf.read(numMips);
|
||||
|
||||
uint16_t layer;
|
||||
_cmdbuf.read(layer);
|
||||
|
||||
uint16_t numLayers;
|
||||
_cmdbuf.read(numLayers);
|
||||
|
||||
flushTextureUpdateBatch(_cmdbuf);
|
||||
|
||||
m_renderCtx->clearTexture(handle, mip, numMips, layer, numLayers);
|
||||
}
|
||||
break;
|
||||
|
||||
case CommandBuffer::ReadTexture:
|
||||
{
|
||||
BGFX_PROFILER_SCOPE("ReadTexture", kColorResource);
|
||||
@@ -5838,6 +5863,32 @@ namespace bgfx
|
||||
return s_ctx->readTexture(_handle, _data, _layer, _mip);
|
||||
}
|
||||
|
||||
void clear(TextureHandle _handle, uint8_t _mip, uint8_t _numMips, uint16_t _layer, uint16_t _numLayers)
|
||||
{
|
||||
BGFX_CHECK_HANDLE("clearTexture", s_ctx->m_textureHandle, _handle);
|
||||
|
||||
const TextureRef& ref = s_ctx->m_textureRef[_handle.idx];
|
||||
|
||||
BX_ASSERT(!ref.isDepth()
|
||||
, "Texture (handle %d, '%S') has a depth/stencil format and can't be cleared; use a view depth clear instead."
|
||||
, _handle.idx
|
||||
, &ref.m_name
|
||||
);
|
||||
BX_ASSERT(!bimg::isCompressed(bimg::TextureFormat::Enum(ref.m_format) )
|
||||
, "Texture (handle %d, '%S', %s) is compressed and can't be cleared."
|
||||
, _handle.idx
|
||||
, &ref.m_name
|
||||
, bimg::getName(bimg::TextureFormat::Enum(ref.m_format) )
|
||||
);
|
||||
BX_ASSERT( (ref.m_flags & BGFX_TEXTURE_RT_MSAA_MASK) <= BGFX_TEXTURE_RT
|
||||
, "Texture (handle %d, '%S') is multisampled and can't be cleared; use a view clear instead."
|
||||
, _handle.idx
|
||||
, &ref.m_name
|
||||
);
|
||||
|
||||
s_ctx->clearTexture(_handle, _mip, _numMips, _layer, _numLayers);
|
||||
}
|
||||
|
||||
FrameBufferHandle createFrameBuffer(uint16_t _width, uint16_t _height, TextureFormat::Enum _format, uint64_t _textureFlags)
|
||||
{
|
||||
_textureFlags |= _textureFlags&BGFX_TEXTURE_RT_MSAA_MASK ? 0 : BGFX_TEXTURE_RT;
|
||||
|
||||
Reference in New Issue
Block a user