gpt4 book ai didi

iOS:GLPaint 无法在大框架上绘制

转载 作者:行者123 更新时间:2023-12-01 19:19:41 24 4
gpt4 key购买 nike

苹果手绘示例GLPaint , 使用 OpenGL ES 绘制不能用大框架绘制。我需要在大 Canvas 上绘制超过 {2410, 1808} 的内容。但是当我尝试绘图时,控制台上会显示一条消息,

2012-06-05 14:29:40.780 GLPaint[3390:707] Frame of drawingView: {{-827.222, -567.004}, {2410, 1808}}2012-06-05 14:29:40.884 GLPaint[3390:707] failed to make complete framebuffer object 8cd6 

On my code I have set the frame as-

//PaintingViewGL performing the freehand drawing of OpenGL ES
//drawingView is a UIView with dynamic frame size

paintingViewGL = [[PaintingViewGL alloc] initWithFrame:drawingView.frame];
paintingViewGL.backgroundColor = [UIColor clearColor];

[drawingView addSubview:paintingViewGL];
paintingViewGL.center = drawingView.center;
paintingViewGL.hidden = NO;

我在帧大小 {1435, 1076} 和稍大一点的帧(如 {1600, 1200})上得到了很好的结果,画笔像波浪一样消失并开始在屏幕上跳舞。有时我会收到 Received memory 警告。在这种情况下,Level=1。

最佳答案

对于 iPad 2 之前的设备,最大纹理大小为 2048 x 2048,因此您不能绘制大于该大小的纹理或帧缓冲区对象。您只会看到错误和黑屏。在较新的设备(iPad 2、Retina iPad、iPhone 4S)上,此纹理大小限制已增加到 4096 x 4096。

在更大的 Canvas 上绘图的唯一解决方案是在 OpenGL ES 中创建平铺机制,就像 CATiledLayer 在 Core Animation 中所做的那样。不过,祝您好运,因为如果您对 OpenGL ES 渲染不太熟悉,这将是一项重大任务。

此外,您将在 OpenGL ES 中遇到非常大的场景的内存问题,尤其是在较旧的 iOS 设备上。对于您提到看到警告的 1600x1200 图像,每个未压缩的帧本身占用约 7.7 MB 的内存。如果您有多个图层或纹理,如果您不小心,可能会很快加起来并耗尽设备上的可用内存。对于 2410x1808 图像,您现在看到的是每帧 17.4 MB,因此这是您希望平铺它以仅使用您当时需要的平铺的另一个原因。

关于iOS:GLPaint 无法在大框架上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10892455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com