| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #include "BsRenderTarget.h"
- #include "BsViewport.h"
- #include "BsException.h"
- #include "BsRenderSystem.h"
- #include "BsCoreThread.h"
- #include "BsFrameAlloc.h"
- namespace BansheeEngine
- {
- void RenderTargetProperties::copyToBuffer(UINT8* buffer) const
- {
- *(RenderTargetProperties*)buffer = *this;
- }
- void RenderTargetProperties::copyFromBuffer(UINT8* buffer)
- {
- *this = *(RenderTargetProperties*)buffer;
- }
- UINT32 RenderTargetProperties::getSize() const
- {
- return sizeof(RenderTargetProperties);
- }
- RenderTargetCore::RenderTargetCore(RenderTarget* parent, RenderTargetProperties* properties)
- :mProperties(properties), mParent(parent)
- {
- }
- RenderTargetCore::~RenderTargetCore()
- {
- bs_delete(mProperties);
- }
- CoreSyncData RenderTargetCore::syncFromCore(FrameAlloc* allocator)
- {
- UINT8* buffer = allocator->alloc(mProperties->getSize());
- mProperties->copyToBuffer(buffer);
- return CoreSyncData(buffer, mProperties->getSize());
- }
- void RenderTargetCore::syncToCore(const CoreSyncData& data)
- {
- assert(data.getBufferSize() == mProperties->getSize());
- mProperties->copyFromBuffer(data.getBuffer());
- }
- void RenderTargetCore::getCustomAttribute(const String& name, void* pData) const
- {
- BS_EXCEPT(InvalidParametersException, "Attribute not found.");
- }
- const RenderTargetProperties& RenderTargetCore::getProperties() const
- {
- THROW_IF_NOT_CORE_THREAD;
- return *mProperties;
- }
- SPtr<RenderTargetCore> RenderTarget::getCore() const
- {
- return std::static_pointer_cast<RenderTargetCore>(mCoreSpecific);
- }
- RenderTarget::RenderTarget()
- :mProperties(nullptr)
- {
- }
- RenderTarget::~RenderTarget()
- {
- bs_delete(mProperties);
- }
- const RenderTargetProperties& RenderTarget::getProperties() const
- {
- THROW_IF_CORE_THREAD;
- return *mProperties;
- }
- CoreSyncData RenderTarget::syncToCore(FrameAlloc* allocator)
- {
- UINT8* buffer = allocator->alloc(mProperties->getSize());
- mProperties->copyToBuffer(buffer);
- return CoreSyncData(buffer, mProperties->getSize());
- }
- void RenderTarget::syncFromCore(const CoreSyncData& data)
- {
- assert(data.getBufferSize() == mProperties->getSize());
- mProperties->copyFromBuffer(data.getBuffer());
- }
- void RenderTarget::getCustomAttribute(const String& name, void* pData) const
- {
- BS_EXCEPT(InvalidParametersException, "Attribute not found.");
- }
- }
|