我有一些当前在 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;
}
我是否正确地考虑使用 GLSL 我需要使用 glUniform4fv 创建 3 件制服来上传 pMorphs、nMorphs 和权重值?然后如何在计算后返回此值并将其分配给 dPositions 和 dNormals?
时间概况