Я пытаюсь ограничить рисование OpenGL частью окна.Для этого я пытаюсь использовать опцию GL_STENCIL_TEST.Вот мой код:
// Enable stencil and clear the stencil buffer
glClear(GL_STENCIL_BUFFER_BIT);
glEnable(GL_STENCIL_TEST);
// Enable func and Op so drawing will effect the stencil buffer
glStencilFunc(GL_NEVER, 0x0, 0x0);
glStencilOp(GL_INCR, GL_INCR, GL_INCR);
// Draw a rect to the stencil
DrawSolidRect(rectDrawArea);
// Enable func and Op so drawing will not effect the stencil buffer
// but will only effect places where the stencil was drawn to in the previous step.
glStencilFunc(GL_EQUAL, 0x1, 0x1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
Проблема в том, что функция glClear (GL_STENCIL_BUFFER_BIT) очень трудоемкая, и, поскольку я рисую со скоростью 25 кадров в секунду, она действительно замедляет работу приложения.Я попытался удалить эту функцию - это решает проблему медлительности, но вызывает мигание при инициализации приложения - в течение примерно 10 секунд.Чем он исчезает и работает нормально.
Может кто-нибудь подсказать, почему мерцание или какие другие функции можно использовать, которые не так трудоемки?