我正在尝试使用 glScissor 仅隔离需要更新的屏幕部分。我有一个游戏区域,我需要更新每一帧,但 UI 区域需要更新的频率要低得多。游戏区域很好,但 UI 区域不断闪烁着看起来像是旧缓冲区数据的东西。
我错过了什么?
这是我的渲染代码:
[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
if (needsUIUpdate)
{
// clear entire screen
glScissor(0, 0, 320, 480);
glClear(GL_COLOR_BUFFER_BIT);
needsUIUpdate = NO;
[self updateUI];
}
else
{
glScissor(0, 80, 320, 400);
glClear(GL_COLOR_BUFFER_BIT);
}
for (Cell* c in allCells)
[c animate];
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];