开发者

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜