mirror of https://github.com/axmolengine/axmol.git
rename FrameBufferObject->FrameBuffer
Move FrameBufferObject related class to experimental namespace
This commit is contained in:
parent
133ef90c09
commit
9acab65e4f
|
@ -483,7 +483,7 @@ void Camera::clearBackground(float depth)
|
|||
}
|
||||
}
|
||||
|
||||
void Camera::setFrameBufferObject(FrameBufferObject *fbo)
|
||||
void Camera::setFrameBufferObject(experimental::FrameBuffer *fbo)
|
||||
{
|
||||
CC_SAFE_RETAIN(fbo);
|
||||
CC_SAFE_RELEASE_NULL(_fbo);
|
||||
|
@ -498,7 +498,7 @@ void Camera::applyFrameBufferObject()
|
|||
{
|
||||
if(nullptr == _fbo)
|
||||
{
|
||||
FrameBufferObject::applyDefaultFBO();
|
||||
experimental::FrameBuffer::applyDefaultFBO();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -32,7 +32,10 @@ THE SOFTWARE.
|
|||
NS_CC_BEGIN
|
||||
|
||||
class Scene;
|
||||
class FrameBufferObject;
|
||||
namespace experimental
|
||||
{
|
||||
class FrameBuffer;
|
||||
}
|
||||
/**
|
||||
Viewport is a normalized to FrameBufferObject
|
||||
But for default FBO, the size is absolute.
|
||||
|
@ -256,7 +259,7 @@ public:
|
|||
/**
|
||||
Set FBO, which will attacha several render target for the rendered result.
|
||||
*/
|
||||
void setFrameBufferObject(FrameBufferObject* fbo);
|
||||
void setFrameBufferObject(experimental::FrameBuffer* fbo);
|
||||
/**
|
||||
Set Viewport for camera.
|
||||
*/
|
||||
|
@ -303,7 +306,7 @@ protected:
|
|||
friend class Director;
|
||||
Viewport _viewport;
|
||||
|
||||
FrameBufferObject* _fbo;
|
||||
experimental::FrameBuffer* _fbo;
|
||||
protected:
|
||||
static Viewport _defaultViewport;
|
||||
public:
|
||||
|
|
|
@ -187,7 +187,7 @@ void Scene::render(Renderer* renderer)
|
|||
#endif
|
||||
|
||||
Camera::_visitingCamera = nullptr;
|
||||
FrameBufferObject::applyDefaultFBO();
|
||||
experimental::FrameBuffer::applyDefaultFBO();
|
||||
}
|
||||
|
||||
void Scene::removeAllChildren()
|
||||
|
|
|
@ -279,7 +279,7 @@ void Director::drawScene()
|
|||
}
|
||||
|
||||
_renderer->clear();
|
||||
FrameBufferObject::clearAllFBOs();
|
||||
experimental::FrameBuffer::clearAllFBOs();
|
||||
/* to avoid flickr, nextScene MUST be here: after tick and before draw.
|
||||
* FIXME: Which bug is this one. It seems that it can't be reproduced with v0.9
|
||||
*/
|
||||
|
@ -417,7 +417,7 @@ void Director::setOpenGLView(GLView *openGLView)
|
|||
_eventDispatcher->setEnabled(true);
|
||||
}
|
||||
|
||||
_defaultFBO = FrameBufferObject::getOrCreateDefaultFBO(_openGLView);
|
||||
_defaultFBO = experimental::FrameBuffer::getOrCreateDefaultFBO(_openGLView);
|
||||
_defaultFBO->retain();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,8 +60,10 @@ class Renderer;
|
|||
class Camera;
|
||||
|
||||
class Console;
|
||||
|
||||
class FrameBufferObject;
|
||||
namespace experimental
|
||||
{
|
||||
class FrameBuffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Matrix stack type.
|
||||
|
@ -597,7 +599,7 @@ protected:
|
|||
Renderer *_renderer;
|
||||
|
||||
/* Default FrameBufferObject*/
|
||||
FrameBufferObject* _defaultFBO;
|
||||
experimental::FrameBuffer* _defaultFBO;
|
||||
|
||||
/* Console for the director */
|
||||
Console *_console;
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
#include "base/CCEventType.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
FrameBufferObject* FrameBufferObject::_defaultFBO = nullptr;
|
||||
std::set<FrameBufferObject*> FrameBufferObject::_frameBufferObjects;
|
||||
namespace experimental{
|
||||
FrameBuffer* FrameBuffer::_defaultFBO = nullptr;
|
||||
std::set<FrameBuffer*> FrameBuffer::_frameBuffers;
|
||||
|
||||
RenderTargetBase::RenderTargetBase()
|
||||
{
|
||||
|
@ -266,7 +266,7 @@ RenderTargetDepthStencil* RenderTargetDepthStencil::create(unsigned int width, u
|
|||
}
|
||||
}
|
||||
|
||||
bool FrameBufferObject::initWithGLView(GLView* view)
|
||||
bool FrameBuffer::initWithGLView(GLView* view)
|
||||
{
|
||||
if(view == nullptr)
|
||||
{
|
||||
|
@ -278,11 +278,11 @@ bool FrameBufferObject::initWithGLView(GLView* view)
|
|||
return true;
|
||||
}
|
||||
|
||||
FrameBufferObject* FrameBufferObject::getOrCreateDefaultFBO(GLView* view)
|
||||
FrameBuffer* FrameBuffer::getOrCreateDefaultFBO(GLView* view)
|
||||
{
|
||||
if(nullptr == _defaultFBO)
|
||||
{
|
||||
auto result = new (std::nothrow) FrameBufferObject();
|
||||
auto result = new (std::nothrow) FrameBuffer();
|
||||
|
||||
if(result && result->initWithGLView(view))
|
||||
{
|
||||
|
@ -300,7 +300,7 @@ FrameBufferObject* FrameBufferObject::getOrCreateDefaultFBO(GLView* view)
|
|||
return _defaultFBO;
|
||||
}
|
||||
|
||||
void FrameBufferObject::applyDefaultFBO()
|
||||
void FrameBuffer::applyDefaultFBO()
|
||||
{
|
||||
if(_defaultFBO)
|
||||
{
|
||||
|
@ -308,17 +308,17 @@ void FrameBufferObject::applyDefaultFBO()
|
|||
}
|
||||
}
|
||||
|
||||
void FrameBufferObject::clearAllFBOs()
|
||||
void FrameBuffer::clearAllFBOs()
|
||||
{
|
||||
for (auto fbo : _frameBufferObjects)
|
||||
for (auto fbo : _frameBuffers)
|
||||
{
|
||||
fbo->clearFBO();
|
||||
}
|
||||
}
|
||||
|
||||
FrameBufferObject* FrameBufferObject::create(uint8_t fid, unsigned int width, unsigned int height)
|
||||
FrameBuffer* FrameBuffer::create(uint8_t fid, unsigned int width, unsigned int height)
|
||||
{
|
||||
auto result = new (std::nothrow) FrameBufferObject();
|
||||
auto result = new (std::nothrow) FrameBuffer();
|
||||
if(result && result->init(fid, width, height))
|
||||
{
|
||||
result->autorelease();
|
||||
|
@ -331,7 +331,7 @@ FrameBufferObject* FrameBufferObject::create(uint8_t fid, unsigned int width, un
|
|||
}
|
||||
}
|
||||
|
||||
bool FrameBufferObject::init(uint8_t fid, unsigned int width, unsigned int height)
|
||||
bool FrameBuffer::init(uint8_t fid, unsigned int width, unsigned int height)
|
||||
{
|
||||
_fid = fid;
|
||||
_width = width;
|
||||
|
@ -365,7 +365,7 @@ bool FrameBufferObject::init(uint8_t fid, unsigned int width, unsigned int heigh
|
|||
return true;
|
||||
}
|
||||
|
||||
FrameBufferObject::FrameBufferObject()
|
||||
FrameBuffer::FrameBuffer()
|
||||
: _clearColor(Color4F(0, 0, 0, 1))
|
||||
, _clearDepth(1.0)
|
||||
, _clearStencil(0)
|
||||
|
@ -378,10 +378,10 @@ FrameBufferObject::FrameBufferObject()
|
|||
, _dirtyFBOListener(nullptr)
|
||||
#endif
|
||||
{
|
||||
_frameBufferObjects.insert(this);
|
||||
_frameBuffers.insert(this);
|
||||
}
|
||||
|
||||
FrameBufferObject::~FrameBufferObject()
|
||||
FrameBuffer::~FrameBuffer()
|
||||
{
|
||||
if(!isDefaultFBO())
|
||||
{
|
||||
|
@ -389,14 +389,14 @@ FrameBufferObject::~FrameBufferObject()
|
|||
CC_SAFE_RELEASE_NULL(_rtDepthStencil);
|
||||
glDeleteFramebuffers(1, &_fbo);
|
||||
_fbo = 0;
|
||||
_frameBufferObjects.erase(this);
|
||||
_frameBuffers.erase(this);
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
Director::getInstance()->getEventDispatcher()->removeEventListener(_dirtyFBOListener);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void FrameBufferObject::clearFBO()
|
||||
void FrameBuffer::clearFBO()
|
||||
{
|
||||
applyFBO();
|
||||
glClearColor(_clearColor.r, _clearColor.g, _clearColor.b, _clearColor.a);
|
||||
|
@ -406,7 +406,7 @@ void FrameBufferObject::clearFBO()
|
|||
applyDefaultFBO();
|
||||
}
|
||||
|
||||
void FrameBufferObject::AttachRenderTarget(RenderTargetBase* rt)
|
||||
void FrameBuffer::attachRenderTarget(RenderTargetBase* rt)
|
||||
{
|
||||
if(isDefaultFBO())
|
||||
{
|
||||
|
@ -425,7 +425,7 @@ void FrameBufferObject::AttachRenderTarget(RenderTargetBase* rt)
|
|||
_fboBindingDirty = true;
|
||||
}
|
||||
|
||||
void FrameBufferObject::applyFBO()
|
||||
void FrameBuffer::applyFBO()
|
||||
{
|
||||
CHECK_GL_ERROR_DEBUG();
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, _fbo);
|
||||
|
@ -452,7 +452,7 @@ void FrameBufferObject::applyFBO()
|
|||
CHECK_GL_ERROR_DEBUG();
|
||||
}
|
||||
|
||||
void FrameBufferObject::AttachDepthStencilTarget(RenderTargetDepthStencil* rt)
|
||||
void FrameBuffer::attachDepthStencilTarget(RenderTargetDepthStencil* rt)
|
||||
{
|
||||
if(isDefaultFBO())
|
||||
{
|
||||
|
@ -470,4 +470,5 @@ void FrameBufferObject::AttachDepthStencilTarget(RenderTargetDepthStencil* rt)
|
|||
_rtDepthStencil = rt;
|
||||
_fboBindingDirty = true;
|
||||
}
|
||||
NS_CC_END
|
||||
} //end of namespace experimental
|
||||
NS_CC_END
|
||||
|
|
|
@ -31,8 +31,12 @@
|
|||
#include <set>
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
class GLView;
|
||||
class EventListenerCustom;
|
||||
|
||||
namespace experimental {
|
||||
|
||||
class RenderTargetBase : public Ref
|
||||
{
|
||||
public:
|
||||
|
@ -126,12 +130,10 @@ protected:
|
|||
#endif
|
||||
};
|
||||
|
||||
class GLView;
|
||||
|
||||
class CC_DLL FrameBufferObject : public Ref
|
||||
class CC_DLL FrameBuffer : public Ref
|
||||
{
|
||||
public:
|
||||
static FrameBufferObject* create(uint8_t fid, unsigned int width, unsigned int height);
|
||||
static FrameBuffer* create(uint8_t fid, unsigned int width, unsigned int height);
|
||||
|
||||
bool init(uint8_t fid, unsigned int width, unsigned int height);
|
||||
public:
|
||||
|
@ -149,16 +151,16 @@ public:
|
|||
|
||||
RenderTargetBase* getRenderTarget() const { return _rt; }
|
||||
RenderTargetDepthStencil* getDepthStencilTarget() const { return _rtDepthStencil; }
|
||||
void AttachRenderTarget(RenderTargetBase* rt);
|
||||
void AttachDepthStencilTarget(RenderTargetDepthStencil* rt);
|
||||
void attachRenderTarget(RenderTargetBase* rt);
|
||||
void attachDepthStencilTarget(RenderTargetDepthStencil* rt);
|
||||
|
||||
bool isDefaultFBO() const { return _isDefault; }
|
||||
unsigned int getWidth() const { return _width; }
|
||||
unsigned int getHeight() const { return _height; }
|
||||
|
||||
CC_CONSTRUCTOR_ACCESS:
|
||||
FrameBufferObject();
|
||||
virtual ~FrameBufferObject();
|
||||
FrameBuffer();
|
||||
virtual ~FrameBuffer();
|
||||
bool initWithGLView(GLView* view);
|
||||
private:
|
||||
//openGL content for FrameBuffer
|
||||
|
@ -177,19 +179,20 @@ private:
|
|||
RenderTargetDepthStencil* _rtDepthStencil;
|
||||
bool _isDefault;
|
||||
public:
|
||||
static FrameBufferObject* getOrCreateDefaultFBO(GLView* glView);
|
||||
static FrameBuffer* getOrCreateDefaultFBO(GLView* glView);
|
||||
static void applyDefaultFBO();
|
||||
static void clearAllFBOs();
|
||||
private:
|
||||
//static GLuint _defaultFBO;
|
||||
static FrameBufferObject* _defaultFBO;
|
||||
static std::set<FrameBufferObject*> _frameBufferObjects;
|
||||
static FrameBuffer* _defaultFBO;
|
||||
static std::set<FrameBuffer*> _frameBuffers;
|
||||
|
||||
private:
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
EventListenerCustom* _dirtyFBOListener;
|
||||
#endif
|
||||
};
|
||||
} // end of namespace experimental
|
||||
|
||||
NS_CC_END
|
||||
|
||||
|
|
|
@ -1433,7 +1433,7 @@ void CameraFrameBufferObjectTest::onEnter()
|
|||
auto sizeInpixels = Director::getInstance()->getWinSizeInPixels();
|
||||
auto size = Director::getInstance()->getWinSize();
|
||||
auto fboSize = Size(sizeInpixels.width * 1, sizeInpixels.height * 1.5);
|
||||
auto fbo = FrameBufferObject::create(1, fboSize.width, fboSize.height);
|
||||
auto fbo = experimental::FrameBuffer::create(1, fboSize.width, fboSize.height);
|
||||
|
||||
CameraBaseTest::onEnter();
|
||||
//auto sprite = Sprite::createWithTexture(fbo);
|
||||
|
@ -1449,10 +1449,10 @@ void CameraFrameBufferObjectTest::onEnter()
|
|||
// sprite->runAction(RepeatForever::create(animate));
|
||||
//}
|
||||
//sprite->setPosition(Vec2(100,100));
|
||||
auto rt = RenderTarget::create(fboSize.width, fboSize.height);
|
||||
auto rtDS = RenderTargetDepthStencil::create(fboSize.width, fboSize.height);
|
||||
fbo->AttachRenderTarget(rt);
|
||||
fbo->AttachDepthStencilTarget(rtDS);
|
||||
auto rt = experimental::RenderTarget::create(fboSize.width, fboSize.height);
|
||||
auto rtDS = experimental::RenderTargetDepthStencil::create(fboSize.width, fboSize.height);
|
||||
fbo->attachRenderTarget(rt);
|
||||
fbo->attachDepthStencilTarget(rtDS);
|
||||
auto sprite = Sprite::createWithTexture(fbo->getRenderTarget()->getTexture());
|
||||
sprite->setScale(0.3);
|
||||
sprite->runAction(RepeatForever::create(RotateBy::create(1, 90)));
|
||||
|
|
Loading…
Reference in New Issue