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