2012-01-17 15 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で割るので、32になります。' mat3x4'sを使っていくつかの転置作業をすると、3で割ります。したがって、quaternion + positionを以下のように使います:私は、2つのベクトルしか取らないことを示唆しました。したがって、64個のベクトルを持つことができます。もちろん、投影行列やその他のもののような、あなたが必要とする可能性がある他の制服は除きます。 –

1

iOS 7から、頂点シェーダからテクスチャユニットにアクセスできるので、テクスチャを作成し、マトリックスで埋めて、頂点シェーダからマトリックスにアクセスできます。これにより、より複雑な実装を犠牲にして、より多くの行列にアクセスすることが可能になります。

関連する問題