2012-03-21 13 views
2

私が書いているゲームに対してinstrumentsユーティリティを実行すると、配列を循環していくつかの単純なキューブオブジェクトを描画するときに、ゾーンでのコピーに関連する一連のメモリリークが表示されます。GLKitメモリリークcopywithZone

私はOpenGLプログラミングを初めて利用しているので、これを追跡する最良の方法は不明です。私のプログラムはARCを使用しており、IOS 5用にビルドされています。私はOPENGl 2.0を使用してBafeEffectを使用するようにGLKitを初期化していますので、自分自身のシェーダなどを書く必要はありません。私は描画機能内で何かをリリースしてはならないと思っています。以下は私の描画機能のコードです。皆さんは見てみて、何かが問題として際立っているかどうかを見てください。

もう1つ注目すべきことは、15種類のテクスチャを使用していることです。キューブは15種類のうち1種類にすることができます。テクスチャのキューブクラスにプロパティが設定されていて、そこにキューブを作成するときに設定します。しかし、私はプログラムのビューがload starts.Thyそれぞれが75k未満の小さな.jpsファイルであり、各キューブがまっすぐに同じテクスチャを使用するので、すべての15を読み込むので、あまりにも大きな問題ではありません。ここで

は私の描画機能にコードです:

- (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); 

} 
+0

私も同様の問題があります。何かを見つけましたか? –

+1

はい、実際のAppleのバグです。私はこの電話でサポートコールを焼かなければなりませんでした。私はそれを信じなければならない。そのGLKitで描画する準備の問題。私はAppleのサポートごとにバグとして提出しています。回避策は、通常のOpenGLで描画することでした。彼らは、OpenGLの例を使って、彼らが誰かがキューブを描くのかを見てみましょう.GLキットは他のものと同じです。 – TommyT39

答えて

2

GLKBaseEffectのprepareToDraw方法は、iOS 5.1に漏れているように見えます。ここで同じ漏れの問題。私がprepareToDraw - > no leakをコメントすると。

回避方法:GLKBaseEffectは使用しないでください。

+0

GLKSkyboxEffect – chunkyguy

関連する問題