2012-11-29 8 views
0

OpenGL에서 텍스처와 이미지 사이의 관계를 이해하는 데 어려움이 있습니다. iPhone에서 GPU로 텍스처를 렌더링 할 때 오버 헤드를 줄이기 위해 텍스처 아틀라스와 함께 CCSpriteBatchNode (cocos2d)를 만드는 이유가 텍스처가 고유 한 오버 헤드라는 것을 이해합니다. 그러나 GPU가 바위, 적, 어쩌면 배 또는 심지어 같은 질감을 사용하는 거대한 괴물과 같은 다른 이미지를 그릴 수 있습니까? 나는 텍스쳐가 이미지의 색 요소 값을 저장하는 OpenGL 버퍼라고 가정하고 있지만 다른 색 값을 가진 많은 다른 유형의 객체가있을 수 있으므로 어떻게 같은 텍스쳐를 사용하여 그려 낼 수 있었 을까?OpenGL ES 2.0에서 텍스처와 이미지 간의 관계

우리가 그릴 수있는 텍스처와 실제 이미지를 완전히 구별하지 못하고 Illustrator에서 말하고 나서 텍스처 아트라스를 사용하여 프로젝트에 복사 할 수 있습니다. 또 다른 흥미로운 점은 텍스쳐는 2의 거듭 제곱 인 차원을 가져야하지만 이미지는 임의의 차원을 가질 수 있다는 것입니다. 아무도 텍스처가 무엇인지 정확히 안내해 줄 수 있습니까? 그리고 이미지와 어떻게 다른가요? 고맙습니다.

답변

1

CCSpriteBatchNode를 사용하여 하나의 텍스처를 사용하여 다른 것을 그립니다. 하나의 텍스처 아틀라스와 결합 된 여러 개의 그림을 가질 수 있습니다. 하나의 파일은 하나의 텍스처로 만들어지며 모든 이미지를 담고 모든 스프라이트 (바위, 원수 등)는 단순히 텍스처 좌표의 일부만을 사용하여 전체가 아닌 일부 텍스처 좌표를 사용합니다 조직.

그리기 호출 수를 줄이는 것뿐만 아니라 fps 속도를 높이는 데 유용합니다. 또한 응용 프로그램 메모리를 저장하고 한 번에 더 많은 사진을로드하는 데 도움이됩니다. 이것은 귀하의 두 번째 질문입니다.

예. 로드 된 메모리 텍스처의 크기는 2의 제곱입니다. 따라서 실제 크기가 64x64 인 이미지는 같은 크기의 텍스처로 만들어 지지만 크기가 65x65 인 그림은 크기가 128x128 인 텍스처로 만들어집니다. 메모리 사용량이 증가합니다. 질감 아트 라이트를 만들 때 크기가 큰 하나의 거친 텍스처 아틀라스 (예 : 2048x2048)에서 크기가 다른 여러 그림을 결합 할 수 있습니다. 생성 된 텍스처는 동일한 크기를 가지며 모든 이미지 (프레임)를 포함하므로 CCSpriteBatchNode와 함께 사용하여 그리기 호출 수를 줄입니다.

+0

스프라이트가 다른 텍스처 좌표를 사용하여 텍스처의 일부만 그리는 부분은 누락 된 링크입니다. 이제는 모두 이해가됩니다 ..! 감사합니다 –

+0

당신은 =) – Morion

관련 문제