• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - GLKit 内存泄漏 copywithZone

[复制链接]
菜鸟教程小白 发表于 2022-12-11 22:15:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

针对我正在编写的游戏运行工具实用程序,当我循环遍历一个数组并绘制一些简单的立方体对象时,会显示一堆与使用 Zone 进行复制相关的内存泄漏。

由于我是 OpenGL 编程的新手,因此我不确定找到此问题的最佳方法。我的程序正在使用 ARC,并设置为为 IOS 5 构建。我正在初始化 GLKit 以使用 OPenGl 2.0 并使用 BafeEffect,因此我不必编写自己的着色器等。这不应该是火箭科学。我猜我一定没有在绘图功能中释放一些东西。下面是我的绘图功能的代码。你们能看看有没有什么突出的问题?

另外需要注意的是,我使用了 15 种不同的纹理,立方体可以是 15 种不同的纹理中的一种。我在纹理的立方体类上设置了一个属性,并在我在那里创建立方体时设置它。但是当我的程序 View 加载开始时,我确实加载了所有 15 个。它们是小的 .jps 文件,每个文件小于 7​​5k,每个立方体都使用相同的纹理,所以应该不是太大的问题。

这是我的绘图函数的代码:

- (void)draw
{
    GLKMatrix4 xRotationMatrix = GLKMatrix4MakeXRotation(rotation.x);
    GLKMatrix4 yRotationMatrix = GLKMatrix4MakeYRotation(rotation.y);
    GLKMatrix4 zRotationMatrix = GLKMatrix4MakeZRotation(rotation.z);
    GLKMatrix4 scaleMatrix     = GLKMatrix4MakeScale(scale.x, scale.y, scale.z);
    GLKMatrix4 translateMatrix = GLKMatrix4MakeTranslation(position.x, position.y, position.z);

    GLKMatrix4 modelMatrix = GLKMatrix4Multiply(translateMatrix,GLKMatrix4Multiply(scaleMatrix,GLKMatrix4Multiply(zRotationMatrix, GLKMatrix4Multiply(yRotationMatrix, xRotationMatrix))));

    GLKMatrix4 viewMatrix = GLKMatrix4MakeLookAt(0, 0, 1, 0, 0, -5, 0, 1, 0);
    effect.transform.modelviewMatrix = GLKMatrix4Multiply(viewMatrix, modelMatrix);

    effect.transform.projectionMatrix = GLKMatrix4MakePerspective(0.125*M_TAU, 1.0, 2, 0); 
    effect.texture2d0.name = wallTexture.name;
    [effect prepareToDraw];

    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);

    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 0, triangleVertices);
    glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, 0, textureCoordinates);
    glDrawArrays(GL_TRIANGLES, 0, 18);

    glDisableVertexAttribArray(GLKVertexAttribPosition);
    glDisableVertexAttribArray(GLKVertexAttribTexCoord0);

}



Best Answer-推荐答案


GLKBaseEffect 的 prepareToDraw 方法似乎在 iOS 5.1 中泄漏。这里有同样的泄漏问题。如果我评论 prepareToDraw -> 没有泄漏。

如何规避:不要使用 GLKBaseEffect。

关于ios - GLKit 内存泄漏 copywithZone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808933/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap