Share this post

예제 5-15는 새 LoadPngImage 메서드에 대한 구현을 보여 주며 있습니다. CGImageGetAlphaInfo, CGImageGetColorSpace 및 CGColorSpaceGetModel과 같은 형식 및 형식 정보를 추출하는 데 사용되는 핵심 그래픽 함수를 확인합니다. 이러한 함수는 매우 간단하기 때문에 이러한 함수에 대해 자세히 설명하지 는 않습니다. 자세한 내용은 애플의 아이폰 개발자 사이트에서 그들을 찾아. 320×480 텍스처가 mipmapped(또는 이전 iPhone을 지원하는 경우)해야 하는 경우 512×512 텍스처를 사용하고 텍스처 좌표를 조정하여 320×480 하위 영역을 해결할 수 있습니다. 이 작업을 수행하는 한 가지 빠른 방법은 텍스처 매트릭스를 사용하는 것입니다: 이미지 품질에 눈에 띄는 차이를 만들지 않을 때 블록 압축을 사용하는 것이 좋습니다. 메모리 공간을 줄일 뿐만 아니라 캐시 일관성이 향상되어 성능도 향상될 수 있습니다. 아이폰은 PVRTC라는 블록 압축의 특정 유형을 지원, 아이폰의 그래픽 프로세서 역할을 PowerVR 칩의 이름을 따서 명명. PVRTC는 표 5-1에 나타낸 바와 같이 네 가지 변이체를 가지고 있다. 더 나은 또는 더 나쁜, 아이폰 플랫폼 여기 OpenGL 코어 사양에서 분기. ES 1.1의 POT 제약 조건이 항상 적용되는 것은 아니며 ES 2.0의 NPOT 기능도 적용되지 않습니다.

텍스처가 2의 힘인지 확인하는 한 가지 방법은 석영을 사용하여 텍스처를 확장하는 것입니다. 일반적으로 런타임에 크기를 조정하는 대신 원하는 크기로 이미지를 저장하는 것이 좋지만 런타임에 크기를 조정해야 하는 이유가 있습니다. 예를 들어 iPhone 카메라에서 생성된 텍스처를 만들 수 있습니다(다음 섹션에서 보여 드리겠습니다). 예제 5-25는 매우 간단합니다. 대부분은 NextPot 메서드를 제외하고 이전 섹션에 제시된 LoadImage 메서드와 동일합니다. 그것은 약간의 이동으로 무엇을 할 수 있는지 놀랍습니다! NextPot 메서드에 대한 입력이 이미 2의 전원인 경우 동일한 값을 호출자에게 다시 반환합니다. 그렇지 않은 경우 두 개의 다음 전원을 반환합니다. 나는이 알고리즘의 파생으로 당신을 지루하게하지 않습니다,하지만이 트릭으로 동료를 감동하는 재미. 이미지 파일은 여러 가지 다른 파일 형식에 있을 수 있지만 지금은 PNG로 이동합니다.

선택적 알파 채널, 무손실 압축 및 가변 색상 정밀도를 지원하기 때문에 인기가 있습니다.