Запуск утилиты инструментов против игры, которую я пишу, показывает кучу утечек памяти, связанных с копией с зоной, когда я просматриваю массив и рисую некоторые простые объекты куба.GLKit Memory Leak copywithZone
Я не уверен, что лучший способ отслеживать это, поскольку я новичок в программировании OpenGL. Моя программа использует ARC и настроена на сборку IOS 5. Я инициализирую GLKit использовать OPENGl 2.0 и используя BafeEffect, поэтому мне не нужно писать свои собственные шейдеры и т. Д. Это не должно быть наукой о ракетах. Я предполагаю, что я должен что-то не выпускать в рамках функции рисования. Ниже приведен код моей функции рисования. Не могли бы вы, ребята, взглянуть и посмотреть, что-то отличное от проблемы?
Еще одна вещь, которую нужно отметить, это то, что я использую 15 различных текстур, кубы могут быть 1 из 15 разных. У меня есть свойство, установленное в классе куба для текстуры, и я устанавливаю его, когда создаю куб в массиве. Но я загружаю все 15, когда мои просмотры программ загружали starts.They - маленькие .jps-файлы, которые меньше 75k каждый, и каждый куб использует одну и ту же текстуру на всем протяжении, поэтому не должен быть слишком большой проблемой.
Вот код для моей функции рисования:
- (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 kit, другой - с нормальным открытым gl .. – TommyT39