Ios 在OpenGL ES中复制UIView drawRect
我的iOS应用程序使用核心图形绘制成位图(与我的视图大小相同)。我想将位图的更新区域推送到屏幕上。(我使用了标准的UIView drawRect方法,但我有一些很好的理由切换到OpenGL) 我只想在OpenGL视图中复制与UIView/CALayer drawRect相同的行为。基本上,我想在我的OpenGL视图上更新脏矩形。没别的了 到目前为止,我已经能够创建一个OpenGL ES 1.1视图,并在每次更新位图时使用单个四边形(顶点数组上的纹理)在屏幕上推送整个位图。当然,这是非常低效的,因为我只需要刷新脏矩形,而不是整个视图 在OpenGL ES中,最有效的方法是什么?我应该使用四边形晶格并更新与脏矩形相交的四边形的纹理吗?(如果我使用这种方法,我应该使用VBO吗?) 仅供参考(以防万一),我不需要旋转,但需要缩放整个OpenGL视图 更新:Ios 在OpenGL ES中复制UIView drawRect,ios,opengl-es,uiview,drawrect,Ios,Opengl Es,Uiview,Drawrect,我的iOS应用程序使用核心图形绘制成位图(与我的视图大小相同)。我想将位图的更新区域推送到屏幕上。(我使用了标准的UIView drawRect方法,但我有一些很好的理由切换到OpenGL) 我只想在OpenGL视图中复制与UIView/CALayer drawRect相同的行为。基本上,我想在我的OpenGL视图上更新脏矩形。没别的了 到目前为止,我已经能够创建一个OpenGL ES 1.1视图,并在每次更新位图时使用单个四边形(顶点数组上的纹理)在屏幕上推送整个位图。当然,这是非常低效的,因
这种方法确实有效。然而,iOS5.x中的视网膜显示设备存在一个缺陷,当使用单缓冲时会产生伪影。该问题已在iOS6中修复。我还没有解决办法。你可以简单地使用TexSubImage更新一部分纹理,然后重新绘制标准的全屏四边形,但使用剪刀矩形集(glScissor)将其设置为“脏”部分。德国劳埃德船级社将不会在此矩形外绘制任何碎片
为了实现这一点,您当然必须使用单缓冲。您只需使用TexSubImage更新纹理的一部分,然后重新绘制标准的全屏四边形,但使用剪刀矩形设置(glScissor)将其设置为“脏”部分。德国劳埃德船级社将不会在此矩形外绘制任何碎片
要使其工作,您当然必须使用单缓冲。谢谢您的帮助。要使用单缓冲:((CaeAglayer*)[self layer])。drawableProperties=[NSDictionary Dictionary WithObjectsAndKeys:[NSNumber numberWithBool:TRUE],KeaglDrawablePropertyRetaineBack,kEAGLColorFormatRGBA8,kEAGLDrawablePropertyColorFormat,无];使用CVOpenGLESTextureCache会有什么好处吗?谢谢你的帮助。要使用单缓冲:((CaeAglayer*)[self layer])。drawableProperties=[NSDictionary Dictionary WithObjectsAndKeys:[NSNumber numberWithBool:TRUE],KeaglDrawablePropertyRetaineBack,kEAGLColorFormatRGBA8,kEAGLDrawablePropertyColorFormat,无];使用CVOpenGLESTextureCache有什么好处吗?