使用glClear()函数时是否可以不清除整个屏幕?我需要只清除屏幕的一部分以节省一些渲染时间,否则我将不得不每帧重绘一半的屏幕,即使另一半没有发生任何事情。
当然,这应该像现在的glClear()一样快速(或更快)地完成。
答案 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