首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GLKit内存泄漏copywithZone

GLKit内存泄漏copywithZone
EN

Stack Overflow用户
提问于 2012-03-22 00:36:46
回答 1查看 544关注 0票数 2

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

我不确定跟踪这个问题的最好方法,因为我是OpenGL编程的新手。我的程序正在使用ARC,并且设置为为iOS5构建。我正在初始化GLKit以使用OPenGl 2.0并使用BafeEffect,这样我就不必编写自己的着色器了。这不应该是火箭科学。我猜我一定没有在draw函数中释放一些东西。下面是我的绘图函数的代码。你们能帮我看看有没有什么问题吗?

另一件要注意的事情是,我使用了15种不同的纹理,立方体可以是15种不同纹理中的一种。我在cube类上为纹理设置了一个属性,我在那里的数组中创建立方体时设置了它。但是当我的程序视图加载starts.They时,我确实加载了所有15个文件,每个文件都小于75k,并且每个立方体都使用相同的纹理,所以应该不会有太大的问题。

下面是我的绘图函数的代码:

代码语言:javascript
运行
复制
- (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);

}
EN

回答 1

Stack Overflow用户

发布于 2012-04-13 01:24:52

GLKBaseEffect的prepareToDraw方法似乎在iOS 5.1中泄漏。这里也有同样的泄漏问题。如果我注释prepareToDraw ->,就不会泄漏。

如何规避:不要使用GLKBaseEffect。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9808933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档