2012-01-17 3 views
4

정점 스키닝 모델을 그리는 경우 다른 iOS 장비의 draw-call/batch 당 최대 본 수는 얼마입니까?OpenGL ES 2.0 정점 스키닝 최대 뼈 수?

OpenGL ES 1.1에서는 제한이 팔레트 행렬 수로 설정되지만 OpenGL ES 2.0에서는 제한 설정이 어떻게됩니까?

답변

6

OpenGL ES 2.0은 모든 정점 처리에 셰이더를 사용합니다. 따라서 얼마나 많은 균일 한 행렬을 만들 수 있는지에 달려 있습니다. 이것은 구현이 정의한 한계이므로 하드웨어마다 다릅니다.

공간을 절약하기 위해 전체 행렬 대신 뼈에 쿼터니언 + 위치를 사용할 수도 있습니다.

+0

ES 2.0이 버텍스 텍스처링을 지원하는 경우 변환 데이터에 텍스처를 사용할 수도 있습니다.이 텍스처는 아마도 더 많은 메모리를 제공 할 것입니다. 하지만 성능은 그다지 좋지 않을 것 같습니다. –

+0

답변 해 주셔서 감사합니다. apple [here] (http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/OpenGLESPlatforms/OpenGLESPlatforms.html)에서 지정한대로 PowerVR SGX의 OpenGL ES 2.0은 "최대 128 개의 유니폼 버텍스 쉐이더에있는 벡터 "를 선택합니다. 이것은 어떻게 균일 한 행렬의 최대 개수로 변환됩니까? –

+6

@ JonasBromö : 그것은 다릅니다. 'mat4's를 사용하면 숫자를 4로 나눕니다. 그래서'mat3x4's를 사용하고 약간의 전치 작업을한다면 3을 곱하면됩니다. 그래서 quaternion + position을 다음과 같이 사용합니다 : 나는 단지 2 개의 벡터만을 필요로한다고 제안 했으므로 64 개의 벡터를 가질 수 있습니다. 투영 행렬 또는 기타와 같이 필요한 다른 유니폼을 빼고. –

1

iOS 7에서 버텍스 쉐이더에서 텍스처 단위를 액세스 할 수 있으므로 텍스처를 만들고 매트릭스로 채우고 버텍스 쉐이더에서 매트릭스에 액세스 할 수 있습니다. 이것은보다 복잡한 구현을 희생하면서 더 많은 매트릭스에 액세스 할 수있게합니다.