OpenGL: How to clear only a part of the screen?
Is it possible to not clear entire screen when using glClear() function? I need to clear only a part of the screen to save some rendering time, otherwise i would have to redraw half of the screen every frame, even if nothing is happening on the other half.
Of co开发者_如何转开发urse this should be done as quickly (or quickier) as the glClear() is now.
You might want to look into glScissor. From the documentation:
While scissor test is enabled, only pixels that lie within the scissor box can be modified by drawing commands.
To clear only a specific rectangular region, enable ScissorTest
and call Clear
. Once enabled, only pixels within the scissor box will be affected by drawing commands, so disable ScissorTest
when you need to modify the outside area again.
OpenTK example:
GL.Enable (EnableCap.ScissorTest);
GL.Scissor (ViewportX, ViewportY, ViewportWidth, ViewportHeight);
GL.Clear (ClearBufferMask.ColorBufferBit);
GL.Disable (EnableCap.ScissorTest);
Draw a giant quad :) Apply this to just half your screen.
http://www.opengl.org/resources/faq/technical/transformations.htm#tran0090
精彩评论