Я хочу нарисовать два слоя в моей сцене (скажем, основной слой и слой отладки). Теперь я рисую свои слои таким образом:Как нарисовать два слоя с разной скоростью fps?
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);
Как перерисовать этот слой только каждый второй кадр?
Я смущен. Вы говорите, что хотите нарисовать слой каждый второй кадр, а затем вы говорите, что не хотите этого делать ... ??? – Galik
Я хочу использовать draw call one для двух кадров. На первом кадре я рисую слой. Во втором кадре я ничего не делаю, кроме своего слоя на экране. На третьем кадре я перерисовываю слой. –
Поместите второй слой в фреймбуфер (т. Е. Отрисуйте текстуру)? На каждом кадре вы копируете контент по сцене, но можете обновлять его так редко, как вам нравится. – MaKo