RESULT Device::Create(USINT frameWidth, USINT frameHeight, USINT framebufferNum, DeviceAdapter* deviceAdapter) { if(frameWidth<=0) return RESULT::INVALIDARG; if(frameHeight<=0) return RESULT::INVALIDARG; if(framebufferNum<=0) return RESULT::INVALIDARG; if(deviceAdapter==nullptr) return RESULT::INVALIDARG; RESULT re; for(INT i=0; i<framebufferNum; i++) { RenderTexture* rt = new RenderTexture(); if(nullptr == rt) return RESULT::OUTMEMORY; re = rt->Create(frameWidth, frameHeight); if(RESULT::SUCC != re) { RemoveFrameBuffers(); return re; } m_framebuffers.Add_back(rt); } m_front = m_framebuffers.Begin(); m_pDeviceAdapter = deviceAdapter; return RESULT::SUCC; }
RenderTargetPtr MultiRenderTarget::CreateTexture(const TargetParam& tp) { if (tp.useAsTexture) { RenderTexture* rt = NEX_NEW(RenderTexture()); rt->Create(TextureBase::TEXTURE_2D, tp.format, dimensions.width, dimensions.height, 1); return Assign(rt); } else { RenderBuffer* rt = NEX_NEW(RenderBuffer()); rt->Create(tp.format, dimensions.width, dimensions.height); return Assign(rt); } }