OpenGL 그리기를 창의 일부로 제한하려고합니다. 그것을하기 위해 GL_STENCIL_TEST 옵션을 사용하려고합니다.glClear (GL_STENCIL_BUFFER_BIT)를 제거하는 방법
// 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 초 동안. 사라지고 잘 작동합니다.
깜박임이 왜 나는지 또는 다른 기능을 사용하면 시간이 오래 걸릴 것이라고 제안 할 수 있습니까?
뷰포트가 잘리지 않습니다. 뷰포트 외부의 그리기 작업은 정의되지 않으며 뷰포트 외부에서 사물이 변경 될 수 있습니다. 추가 가위 (glScissor 및 glEnable (GL_SCISSOR_TEST))가 필요합니다. – datenwolf
아, 네 말이 맞아. 내 대답을 편집하고 그 정보를 추가하겠습니다. 감사! – Ani
그래, 나도 알아,하지만 내가 가지고 있지 않은 Windows 좌표에서 작동하기 때문에 나는 SCISSOR에 문제가있다 :) –