我想在我的场景中绘制两个图层(让我们说主图层和调试信息图层)。现在我以这种方式绘制我的图层:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
layer1->draw();
layer2->draw();
我想做这样的事情:
static int frameCount = 0;
layer1->draw();
if (frameCount % 2) {
layer2->draw();
}
frameCount++;
但我不希望每隔一帧画第二层。我想每帧绘制这一层,但每秒重绘一次。例如,我正在以这种方式绘制我的图层:
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, colorBuffer);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
glDrawArrays(GL_POINTS, 0, vertexNumber);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
如何每隔一帧重绘一次这个图层?
答案 0 :(得分:0)
你必须使用后备缓冲技术:
有两个选项
选择最适合自己的方式。我通常每次重绘都有bool _redraw
,只有在图层中发生了某些变化时才重新渲染纹理。但是可视化每帧的纹理内容......