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;
    }
Пример #2
0
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);
	}
}