문제

매뉴얼은 방금 작성하도록 지시했습니다.

glDeleteTextures(1, &GLtexture);

텍스처가 삭제 될 것이라고 주장합니다. iPhone은 메모리가 부족하며 이러한 텍스처가 실제로 출시되도록하고 싶습니다.

누출 기기는 이것을 감지 할 수 없으며 솔직히 말해서 조금 걱정됩니다. 나는 정말로 질감이 실제로 사라 졌는지 확인하고 싶다.

고맙습니다.

도움이 되었습니까?

해결책

텍스처는 OBJ-C 런타임에 의해 처리되지 않으므로 누출은 그들에 대해 아무것도 알지 못합니다. 다른 도구를 사용해야합니다.

Xcode에서 OpenGL 템플릿을 사용하여 새 프로젝트를 시작하십시오. 장면을 업데이트/그리기하는 메소드를 검색 하고이 코드를 끝에 추가하십시오.

static int tick = -1;
static GLuint tex[5];

if (tick++ < 0)
    for (int f = 0; f < 5; f++)
        tex[f] = 0;

tick = tick % 5;
if (tex[tick]) {
    glDeleteTextures(1, &tex[tick]);
    tex[tick] = 0;
} else {
    glGenTextures(1, &tex[tick]);
    glBindTexture(GL_TEXTURE_2D, tex[tick]);
    char *mem = malloc(1024 * 1024 * 4);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
        1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, mem);
    free(mem);
}

코드는 OpenGL 명령을 사용하여 5 개의 텍스처를 생성하고 파괴합니다. 설치되어 있는지 확인하고 장치에서 한 번 실행하십시오. 처지에 대해 걱정하지 마십시오.

이제 악기를 열고 iPhone의 빈 템플릿으로 시작하십시오. 라이브러리를 열고 메모리 모니터를 창으로 드래그하십시오. 정보 공개 버튼을 클릭하고 "물리적 메모리 무료"를 제외한 모든 것을 선택 취소하십시오. 이제 iPhone에서 바이너리를 시작하여 녹음을 시작하십시오. 악기가 응용 프로그램을 샘플링하려고 할 때 계단 패턴이 위/아래로 향하는 것을 볼 수 있습니다. 프로그램이 실행되는 동안 "실제 메모리"열이있는 모든 활성 프로세스를 볼 수 있으며 실제 메모리 사용을 표시합니다.

내 테스트 에서이 예는 메모리 샘플링 모멘트에 따라 25MB에서 3MB 사이를 소비합니다. 이것은 2 세대 iPhone과 SDK 3.1입니다. 2.X SDK가있는 경우 일반 OpenGL 모니터에서 GART Resident Object 크기를 검색해야합니다. 보다 http://blog.zincroe.com/2009/04/how-to-check-iphone-texture-mory-usage-with-instruments/ 추가 참조.

어쨌든, 메모리가 위아래로 점프하면 gldeletetexture ()가 광고 된대로 작업을 수행한다는 것을 증명합니다.

다른 팁

전화를 랩하십시오 glDeleteTextures(int, int*) 할당 테이블을 유지하는 자신의 기능에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top