2009-08-04 2 views
0

무엇이 문제인지 잘 모르겠습니다. 내 응용 프로그램은 시뮬레이터에서 잘 실행되고 있지만 iPhone에서 실행하려고하면 디버깅하는 동안 또는 신호 "0"을 사용하여 디버깅하지 않고 충돌합니다. Apple에서 제공하는 예제에서 Texture2D.m 및 OpenGLES2DView.m을 사용하고 있습니다. 라이브러리에서 Memory Tracer를 사용하여 Instrument로 iPhone에서 앱의 프로파일을 만들었습니다. 앱이 마지막으로 소비 된 메모리가 실제로 60MB 실제 및 90MB RAM이었을 때 프로파일 링했습니다. 너무 많은 메모리를 소비했기 때문에 다른 문제가 있거나 iPhone이 응용 프로그램을 죽이는 것입니까? 어떤 정보가 필요하면 그것을 말하십시오. 나는 그것을 제공하려고 노력할 것입니다. 로드 시간에 수천 개의 텍스처를 생성하므로 메모리 사용량이 너무 많습니다. 로드되는 사진의 수를 줄이는 것에 대해 정말로 아무것도 할 수 없습니다. 이전에 UIImage에서 실행 중이었지만 정말 낮은 프레임 속도를 제공했습니다. 이 사이트에서 더 높은 프레임 속도를 위해 OpenGLES를 사용해야한다고 읽었습니다.iPhone OpenGLES : 텍스처가 너무 많은 메모리를 소비하고 프로그램이 "0"신호로 충돌합니다.

또한 하위 질문은 UIImage를 사용하여 PNG 파일을로드하지 않은 다음, 제공된 Texture 클래스를 사용하여 OpenGLES 함수의 텍스처를 만들어 드로잉에 사용할 수있는 방법이 있습니까? OpenGLES에서 png 파일에서 직접 텍스처를 생성하는 함수가 있습니까?

답변

0

수천 가지 텍스처? 정말? 한 번에 얼마나 많은 사람들이 화면에 있습니까? 한 번에 그 중 일부만로드 할 수도 있고, 작은 경우 더 작은 텍스처로 결합해야합니다.

내가 들었던 일반적인 지침은 24MB의 텍스처 메모리로 제한된다는 것입니다.

디스크에서로드하는 OpenGLES에는 아무 것도 내장되어 있지 않지만, stb_image과 같은 파일 파서를 사용하여 직접 처리 할 수 ​​있습니다.

+0

수천 개의 이미지가로드되었지만 약 10-50 개의 시간에 몇 개만 표시됩니다. – CustomAppsMan

+0

이미지는 각각 약 128x128 픽셀입니다. – CustomAppsMan

+0

방금 ​​stb_image.c 파일을 다운로드하여 프로젝트에 컴파일하고 다음과 같이 OpenGLES 텍스처를로드하는 데 사용하고 있습니다. int x, y, comp; void * data = (void *) stbi_load (fileName, & x, & y, & comp, 0); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, 데이터); 그 결과 전체 화면이 흰색으로 변합니다. PNG는 UIImage 로딩의 다른 방법으로 잘 작동했습니다. 나는이 글을 쓰면서 애플 아이폰이 번들링하기 전에 .png 파일을 mangles한다는 것을 기억했다. 그래서 나는 그 문제에 대한 해결책을 가지고 시도 할 것이다. – CustomAppsMan

0

2048x2048 픽셀의 텍스처 조각 10 개를로드 해 보았습니다. 텍스처 메모리가 24MB를 초과하지만 iPhone3GS가로드되어 렌더링 될 수 있습니다.

또한 stb_image 또는 SOIL 텍스처 로더를 권장합니다. (stb_image 라이브러리는 SOIL 라이브러리로 사용됩니다.)

관련 문제