mirror of https://github.com/axmolengine/axmol.git
fixed #1466:restore shader when comming to background
This commit is contained in:
parent
f0e7d5a87b
commit
bfa7991a94
|
@ -150,6 +150,11 @@ ShaderNode::ShaderNode()
|
|||
{
|
||||
}
|
||||
|
||||
ShaderNode::~ShaderNode()
|
||||
{
|
||||
CCNotificationCenter::sharedNotificationCenter()->removeObserver(this, EVNET_COME_TO_FOREGROUND);
|
||||
}
|
||||
|
||||
ShaderNode* ShaderNode::shaderNodeWithVertex(const char *vert, const char *frag)
|
||||
{
|
||||
ShaderNode *node = new ShaderNode();
|
||||
|
@ -161,6 +166,10 @@ ShaderNode* ShaderNode::shaderNodeWithVertex(const char *vert, const char *frag)
|
|||
|
||||
bool ShaderNode::initWithVertex(const char *vert, const char *frag)
|
||||
{
|
||||
CCNotificationCenter::sharedNotificationCenter()->addObserver(this,
|
||||
callfuncO_selector(ShaderNode::listenBackToForeground),
|
||||
EVNET_COME_TO_FOREGROUND,
|
||||
NULL);
|
||||
|
||||
loadShaderVertex(vert, frag);
|
||||
|
||||
|
@ -172,9 +181,18 @@ bool ShaderNode::initWithVertex(const char *vert, const char *frag)
|
|||
setContentSize(CCSizeMake(SIZE_X, SIZE_Y));
|
||||
setAnchorPoint(ccp(0.5f, 0.5f));
|
||||
|
||||
m_vertFileName = vert;
|
||||
m_fragFileName = frag;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ShaderNode::listenBackToForeground(CCObject *obj)
|
||||
{
|
||||
this->setShaderProgram(NULL);
|
||||
loadShaderVertex(m_vertFileName.c_str(), m_fragFileName.c_str());
|
||||
}
|
||||
|
||||
void ShaderNode::loadShaderVertex(const char *vert, const char *frag)
|
||||
{
|
||||
CCGLProgram *shader = new CCGLProgram();
|
||||
|
|
|
@ -114,9 +114,11 @@ class ShaderNode : public CCNode
|
|||
{
|
||||
public:
|
||||
ShaderNode();
|
||||
~ShaderNode();
|
||||
|
||||
bool initWithVertex(const char *vert, const char *frag);
|
||||
void loadShaderVertex(const char *vert, const char *frag);
|
||||
void listenBackToForeground(CCObject *obj);
|
||||
|
||||
virtual void update(float dt);
|
||||
virtual void setPosition(const CCPoint &newPosition);
|
||||
|
@ -130,6 +132,8 @@ private:
|
|||
ccVertex2F m_resolution;
|
||||
float m_time;
|
||||
GLuint m_uniformCenter, m_uniformResolution, m_uniformTime;
|
||||
std::string m_vertFileName;
|
||||
std::string m_fragFileName;
|
||||
};
|
||||
|
||||
class ShaderTestScene : public TestScene
|
||||
|
|
Loading…
Reference in New Issue