저는 지난 몇 주 동안 iphone에서 opengl을 사용하여 놀았습니다. VBO (Vertex Buffer Objects)를 사용하기 위해 리팩토링하는 방법을 찾고 있습니다. 내가 그 일을하기 전에 그 일이 가치가 있는지 확인하고 싶습니다. 문제는 afaik가 VBO를 만드는 유일한 이유는 그래픽 카드로 데이터 덩어리를 이동시켜 사용시 시스템 램에서 검색 할 필요가 없다는 것입니다. 그러나 iPhone에는 내가 알고있는 헌신적 인 숫양이 없기 때문에 VBO를 사용하는 데 왜 도움이되는지 알기 위해 고심하고 있습니다. 나는 인터넷에서 의견이 서로 충돌하는 것을 보았고 사과는 확실히 dev를 사용하기를 원했기 때문에 아마 그것을 사용하는 이유가있을 수 있습니다. 그래서 SO에 누군가가 의견을 추가 할 수 있는지 알고 싶었습니다.iPhone 및 Vertex Buffer 객체
답변
iPhone 3G에서 성능이 향상되지 않았습니다. 나는 VBOs로 많은 것들을 옮겼지 만 다른 성능 향상을 추구하는 것이 더 어려워 짐에 따라 결국 그것을 보완했다. 내가 원했던 25 %의 빠른 성능 향상이 아닙니다.
새로운 하드웨어 (3GS)에 차이가있을 수 있음을 읽었지만 다시 언급 할 필요가 없습니다.
에 따라 다릅니다. (죄송합니다).
Rob은 그의 설정에 대한 개선점을 보지 못했지만 큰 개선을 보았던 here is an interesting post을 보았습니다.
VBO가 존재하는 주된 이유는 3D 모델에 정적 데이터가 있다는 것입니다. 첫 번째 병목 현상은 데이터를 비디오 메모리에 복사하는 속도가 느려지는 것입니다 (사용할 수없는 glBegin/glEnd 블록이나 glVertexPointer, glBufferData 및 friends를 사용하여).
오래된 "날으는 토스터기"스크린 세이버를 상상해 봅시다. 모든 건배는 고정적입니다 (위치 만 변경). 왜 모든 프레임을 CPU의 메모리에서 GPU로 복사하는 데 자원 낭비가 있습니까? 버퍼로 한 번 복사하고 단일 명령으로 그립니다. 또한 애니메이션 작업 방법에 따라 애니메이션 토스터까지도 정적 인 방식으로 설명 할 수 있습니다.
내 첫 번째 2D 게임은 VBO없이 시작되었습니다. VBO로 변경했을 때, 차이점이 없었습니다 (Rob과 같은). 그러나 더 정적 인 버퍼를 사용하도록 리팩터링 한 결과, FPS는 20에서 40으로 떨어졌습니다. 목표가 30에 도달 했으므로 만족했습니다. 나는 리팩터링에 대한 아이디어를 더 많이 가지고 있었고, 모든 것을 정적으로 남겼지 만, 지금은 시간이 없다 (게임은 검토 중이며, 다음에 올 것이다).
- 1. OpenGL Vertex Buffer 잘못된 출력을주는 객체 코드
- 2. OpenGL ES 2.0 및 VBO (vertex buffer objects)
- 3. OpenGL Vertex Buffer not drawing (LWJGL)
- 4. Vertex Buffer Objects를 사용하여 다양한 서클을 렌더링하는 방법은 무엇입니까?
- 5. VBO (Vertex Buffer Object)가있는 Kinect 포인트 클라우드 렌더링
- 6. 성능을 향상시키기 위해 OpenGL es (Iphone)의 Vertex Buffer Objects (VBO) 사용하기
- 7. Model View 매트릭스를 변경할 때도 Vertex Buffer Objects를 사용하는 것이 합리적입니까?
- 8. OpenGL Vertex 속성 보폭
- 9. Android Java Vertex Array?
- 10. ido-switch-buffer 및 묻어 버퍼
- 11. Vertex 및 Normal을 나타내는 GLshort를 사용하는 데 문제가 있습니다.
- 12. iPhone - 사전 배열 및 객체 가져 오기
- 13. Emacs erlang buffer
- 14. java.lang.OutOfMemoryError on Audio Buffer
- 15. Opengl Selection Buffer
- 16. iPhone, 메모리/autorelease 객체
- 17. OpenGL 3.x : 버텍스 버퍼 객체 및 glDrawElements (...)를 사용할 때 액세스 위반
- 18. emacs : non-contiguous buffer region
- 19. moq mocking a buffer [] 인수
- 20. emacs23 buffer menu font (GTK)
- 21. 객체 및 객체 구성원 인스턴스화
- 22. BUFFER 및 DIRECT 인수를 expdp와 함께 사용할 수 있습니까
- 23. iPhone 프로그래밍, 객체 작동 방법
- 24. iPhone 드래그 가능한 객체 만들기
- 25. iPhone - 사용자 이벤트에서보기의 객체 생성
- 26. iPhone performSelector가 객체 유형을 변경합니다.
- 27. Iphone SDK - 객체 간 통신
- 28. iphone 싱글 톤 객체 동기화
- 29. Xcode는 파일 및 폴더 구성 (코어 데이터 모델 객체 - iPhone)
- 30. 다른 객체를 나타내는 객체 컬렉션의 객체 지향 설계