Skip to content

Commit 90299f6

Browse files
Mee-guminggo
authored andcommitted
set gl framebuffer read and write back again (#20403)
* set gl framebuffer read and write back again * update review
1 parent f46a9a6 commit 90299f6

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

cocos/renderer/backend/opengl/CommandBufferGL.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,23 @@ void CommandBufferGL::applyRenderPassDescriptor(const RenderPassDescriptor& desc
198198

199199
if (useGeneratedFBO)
200200
_generatedFBOBindColor = true;
201+
202+
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX
203+
if (_framebufferReadWriteDisabled)
204+
{
205+
if (useGeneratedFBO) //user-defined framebuffer
206+
{
207+
glDrawBuffer(GL_COLOR_ATTACHMENT0);
208+
glReadBuffer(GL_COLOR_ATTACHMENT0);
209+
}
210+
else //default framebuffer
211+
{
212+
glDrawBuffer(GL_BACK);
213+
glReadBuffer(GL_BACK);
214+
}
215+
_framebufferReadWriteDisabled = false;
216+
}
217+
#endif
201218
}
202219
else
203220
{
@@ -219,6 +236,7 @@ void CommandBufferGL::applyRenderPassDescriptor(const RenderPassDescriptor& desc
219236
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX
220237
glDrawBuffer(GL_NONE);
221238
glReadBuffer(GL_NONE);
239+
_framebufferReadWriteDisabled = true;
222240
#endif
223241
}
224242
CHECK_GL_ERROR_DEBUG();

cocos/renderer/backend/opengl/CommandBufferGL.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@ class CommandBufferGL final : public CommandBuffer
190190
bool _generatedFBOBindColor = false;
191191
bool _generatedFBOBindDepth = false;
192192
bool _generatedFBOBindStencil = false;
193+
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX
194+
bool _framebufferReadWriteDisabled = false;
195+
#endif
193196

194197
GLint _defaultFBO = 0; // The value gets from glGetIntegerv, so need to use GLint
195198
GLuint _currentFBO = 0;

0 commit comments

Comments
 (0)