@@ -88,8 +88,21 @@ CameraBackgroundDepthBrush::CameraBackgroundDepthBrush()
88
88
, _vao(0 )
89
89
, _vertexBuffer(0 )
90
90
, _indexBuffer(0 )
91
+ #if CC_ENABLE_CACHE_TEXTURE_DATA
92
+ , _backToForegroundListener(nullptr )
93
+ #endif
91
94
{
92
-
95
+ #if CC_ENABLE_CACHE_TEXTURE_DATA
96
+ _backToForegroundListener = EventListenerCustom::create (EVENT_RENDERER_RECREATED, [this ](EventCustom*)
97
+ {
98
+ _vao = 0 ;
99
+ _vertexBuffer = 0 ;
100
+ _indexBuffer = 0 ;
101
+ initBuffer ();
102
+ }
103
+ );
104
+ Director::getInstance ()->getEventDispatcher ()->addEventListenerWithFixedPriority (_backToForegroundListener, -1 );
105
+ #endif
93
106
}
94
107
CameraBackgroundDepthBrush::~CameraBackgroundDepthBrush ()
95
108
{
@@ -105,6 +118,9 @@ CameraBackgroundDepthBrush::~CameraBackgroundDepthBrush()
105
118
glBindVertexArray (0 );
106
119
_vao = 0 ;
107
120
}
121
+ #if CC_ENABLE_CACHE_TEXTURE_DATA
122
+ Director::getInstance ()->getEventDispatcher ()->removeEventListener (_backToForegroundListener);
123
+ #endif
108
124
}
109
125
110
126
CameraBackgroundDepthBrush* CameraBackgroundDepthBrush::create (float depth)
@@ -142,6 +158,12 @@ bool CameraBackgroundDepthBrush::init()
142
158
_quad.tl .texCoords = Tex2F (0 ,1 );
143
159
_quad.tr .texCoords = Tex2F (1 ,1 );
144
160
161
+ initBuffer ();
162
+ return true ;
163
+ }
164
+
165
+ void CameraBackgroundDepthBrush::initBuffer ()
166
+ {
145
167
auto supportVAO = Configuration::getInstance ()->supportsShareableVAO ();
146
168
if (supportVAO)
147
169
{
@@ -178,7 +200,6 @@ bool CameraBackgroundDepthBrush::init()
178
200
179
201
glBindBuffer (GL_ARRAY_BUFFER, 0 );
180
202
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0 );
181
- return true ;
182
203
}
183
204
184
205
void CameraBackgroundDepthBrush::drawBackground (Camera* /* camera*/ )
0 commit comments