現在、CPU で実行されているコードがいくつかあり、OpenGL ES アプリケーションで遅延の問題を引き起こしています。コードは、メッシュの変形を計算します。このコードを GPU で実行してパフォーマンスを向上させる方法を理解するのに苦労しています。
for(int i = 0; i < numberOfVertices; i++)
{
// Update the positions
dPositions[(i*3+0)] += [[pMorphs objectAtIndex:(i*3+0)] floatValue] * weight;
dPositions[(i*3+1)] += [[pMorphs objectAtIndex:(i*3+1)] floatValue] * weight;
dPositions[(i*3+2)] += [[pMorphs objectAtIndex:(i*3+2)] floatValue] * weight;
// Update the normals
dNormals[(i*3+0)] += [[nMorphs objectAtIndex:(i*3+0)] floatValue] * weight;
dNormals[(i*3+1)] += [[nMorphs objectAtIndex:(i*3+1)] floatValue] * weight;
dNormals[(i*3+2)] += [[nMorphs objectAtIndex:(i*3+2)] floatValue] * weight;
}
pMorphs、nMorphs、および重み値をアップロードするには、glUniform4fv を使用して 3 つのユニフォームを作成する必要がある GLSL を使用することを考えるのは正しいですか? 計算後にこの値を返し、dPositions と dNormals に割り当てるにはどうすればよいですか?
時間プロファイル