2010-12-05 2 views
1

큐브를 렌더링한다고 가정 해 보겠습니다. 기하학을 그리려면 단지 8 개의 꼭지점이 필요합니다. 텍스처를 매핑해야 할 경우 24 개의 꼭지점이 필요합니다. 즉 중복 된 꼭지점을 제출해야합니다.OpenGL ES : 텍스처의 정점 수

고스트

답변

1

이러한 정점들은 서로 다른 속성을 가지기 때문에 동일하지 않습니다. 그렇습니다. 일부 데이터는 중복 될 수 있지만 모든 데이터가 중복되는 것은 아닙니다. 일반적으로 인덱스 된 지오메트리는 정점이면 사이에서 공유 될 때 사용될 수 있지만이 경우에는 실제로 공유되지 않습니다.

OpenGL은 정점 데이터 비트를 독립적 인 청크로 분리하는 데 사용할 수있는 정점 배열 기능을 제공합니다. 하나의 연속 배열에 좌표를, 또 다른 배열에 텍스처 좌표를, 세 번째 배열에 좌표를 가질 수 있다고 가정 해 봅시다. 버텍스 데이터는 인터리브 될 필요가 없습니다. , glVertexPointer 당신이 정점 데이터의 일부를 공유하여 일부 메모리를 절약 할 수 있지만, 많은 무승부 통화를 필요로하고,이 간단한 경우에 대한 가치가되지 않을 것 정점 배열을 사용하여 glColorPointer, glTexCoordPointer

를 참조하십시오 입방체. This article은 매우 유용 할 수 있습니다.

+0

인덱싱 된 지오메트리가 수익을 낼 수있는 경우를 알고 있습니까? 내가 올바르게 이해한다면, 어떤 정점에서 페이스간에 공유 된 정점을 가지므로 정점을 다른 텍스처 데이터로 다시 제출해야합니다. – Kimi

+0

답을 편집하여 확인하시기 바랍니다. 인덱싱 된 지오메트리는 패치 나 간단한 쿼드 에서처럼 하나의 서페이스를 설명하는 것과 같이 실제로 공유되는 정점이있는 경우 작동합니다. – detunized

+0

@Al - iPhone과 같은 장치에는 인덱싱 된 삼각형 스트립을 사용하도록 최적화 된 GPU가 있으며, GPU에서 도형이 제한적이라면 인덱스를 사용하여 성능이 크게 향상됩니다. –

1

예를 들어 보시려면 here 아이폰의 색인이 붙은 질감이있는 큐브에 코드를 제공합니다. 아이폰 사용자가 아니더라도 인덱스가 어떻게 이런 객체의 기하학적 크기를 줄일 수 있는지 설명하는 데 도움이 될 수 있습니다. 코드의 OpenGL ES 부분은 다른 플랫폼으로 잘 번역되어야합니다.

색인을 사용하면 중복 지오메트리 (크기가 모바일 GPU의 제한 요소가 될 수 있음) 업로드를 방지 할 수 있으며 iOS 기기의 GPU는 색인 된 삼각형 스트립에 최적화되어 있습니다. 인덱스를 사용하여 내 지오메트리의 크기를 줄이면 상당한 성능상의 이점을 얻었습니다.