Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在OpenGL ES中复制UIView drawRect_Ios_Opengl Es_Uiview_Drawrect - Fatal编程技术网

Ios 在OpenGL ES中复制UIView drawRect

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视图,并在每次更新位图时使用单个四边形(顶点数组上的纹理)在屏幕上推送整个位图。当然,这是非常低效的,因

我的iOS应用程序使用核心图形绘制成位图(与我的视图大小相同)。我想将位图的更新区域推送到屏幕上。(我使用了标准的UIView drawRect方法,但我有一些很好的理由切换到OpenGL)

我只想在OpenGL视图中复制与UIView/CALayer drawRect相同的行为。基本上,我想在我的OpenGL视图上更新脏矩形。没别的了

到目前为止,我已经能够创建一个OpenGL ES 1.1视图,并在每次更新位图时使用单个四边形(顶点数组上的纹理)在屏幕上推送整个位图。当然,这是非常低效的,因为我只需要刷新脏矩形,而不是整个视图

在OpenGL ES中,最有效的方法是什么?我应该使用四边形晶格并更新与脏矩形相交的四边形的纹理吗?(如果我使用这种方法,我应该使用VBO吗?)

仅供参考(以防万一),我不需要旋转,但需要缩放整个OpenGL视图

更新:
这种方法确实有效。然而,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有什么好处吗?