2010-05-03 7 views
2

저는 지난 몇 주 동안 iphone에서 opengl을 사용하여 놀았습니다. VBO (Vertex Buffer Objects)를 사용하기 위해 리팩토링하는 방법을 찾고 있습니다. 내가 그 일을하기 전에 그 일이 가치가 있는지 확인하고 싶습니다. 문제는 afaik가 VBO를 만드는 유일한 이유는 그래픽 카드로 데이터 덩어리를 이동시켜 사용시 시스템 램에서 검색 할 필요가 없다는 것입니다. 그러나 iPhone에는 내가 알고있는 헌신적 인 숫양이 없기 때문에 VBO를 사용하는 데 왜 도움이되는지 알기 위해 고심하고 있습니다. 나는 인터넷에서 의견이 서로 충돌하는 것을 보았고 사과는 확실히 dev를 사용하기를 원했기 때문에 아마 그것을 사용하는 이유가있을 수 있습니다. 그래서 SO에 누군가가 의견을 추가 할 수 있는지 알고 싶었습니다.iPhone 및 Vertex Buffer 객체

답변

1

iPhone 3G에서 성능이 향상되지 않았습니다. 나는 VBOs로 많은 것들을 옮겼지 만 다른 성능 향상을 추구하는 것이 더 어려워 짐에 따라 결국 그것을 보완했다. 내가 원했던 25 %의 빠른 성능 향상이 아닙니다.

새로운 하드웨어 (3GS)에 차이가있을 수 있음을 읽었지만 다시 언급 할 필요가 없습니다.

0

에 따라 다릅니다. (죄송합니다).

Rob은 그의 설정에 대한 개선점을 보지 못했지만 큰 개선을 보았던 here is an interesting post을 보았습니다.

0

VBO가 존재하는 주된 이유는 3D 모델에 정적 데이터가 있다는 것입니다. 첫 번째 병목 현상은 데이터를 비디오 메모리에 복사하는 속도가 느려지는 것입니다 (사용할 수없는 glBegin/glEnd 블록이나 glVertexPointer, glBufferData 및 friends를 사용하여).

오래된 "날으는 토스터기"스크린 세이버를 상상해 봅시다. 모든 건배는 고정적입니다 (위치 만 변경). 왜 모든 프레임을 CPU의 메모리에서 GPU로 복사하는 데 자원 낭비가 있습니까? 버퍼로 한 번 복사하고 단일 명령으로 그립니다. 또한 애니메이션 작업 방법에 따라 애니메이션 토스터까지도 정적 인 방식으로 설명 할 수 있습니다.

내 첫 번째 2D 게임은 VBO없이 시작되었습니다. VBO로 변경했을 때, 차이점이 없었습니다 (Rob과 같은). 그러나 더 정적 인 버퍼를 사용하도록 리팩터링 한 결과, FPS는 20에서 40으로 떨어졌습니다. 목표가 30에 도달 했으므로 만족했습니다. 나는 리팩터링에 대한 아이디어를 더 많이 가지고 있었고, 모든 것을 정적으로 남겼지 만, 지금은 시간이 없다 (게임은 검토 중이며, 다음에 올 것이다).

관련 문제