OpenGL:如何只清除屏幕的一部分?

时间:2010-06-11 21:14:21

标签: c++ opengl

使用glClear()函数时是否可以不清除整个屏幕?我需要只清除屏幕的一部分以节省一些渲染时间,否则我将不得不每帧重绘一半的屏幕,即使另一半没有发生任何事情。

当然,这应该像现在的glClear()一样快速(或更快)地完成。

3 个答案:

答案 0 :(得分:12)

你可能想看一下glScissor。来自文档:

  

启用剪刀测试时,只能通过绘制命令修改位于剪刀框内的像素。

答案 1 :(得分:3)

要仅清除特定的矩形区域,请启用ScissorTest并致电Clear。启用后,剪刀框中的像素只会受到绘图命令的影响,因此当您需要再次修改外部区域时,请禁用ScissorTest

OpenTK示例:

GL.Enable (EnableCap.ScissorTest);
GL.Scissor (ViewportX, ViewportY, ViewportWidth, ViewportHeight);
GL.Clear (ClearBufferMask.ColorBufferBit);
GL.Disable (EnableCap.ScissorTest);

答案 2 :(得分:0)

绘制一个巨大的四边形:)将此应用于屏幕的一半。

http://www.opengl.org/resources/faq/technical/transformations.htm#tran0090