首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骨骼动画顶点着色器的性能问题

骨骼动画顶点着色器的性能问题
EN

Stack Overflow用户
提问于 2012-04-03 04:54:17
回答 1查看 1.8K关注 0票数 2

我的骨骼动画顶点着色器有问题。当一次制作大约32个模型的动画时,我只能得到60帧/秒,在低端计算机上我得到的更少。下面的顶点着色器:

代码语言:javascript
复制
uniform mat4 boneMatrixes[128];

void main(){

  vec4 a = gl_Vertex;

  // Apply bone transformation
  a = boneMatrixes[int(gl_Normal.x)] * gl_Vertex;

  gl_Position = gl_ModelViewProjectionMatrix * a;
  gl_TexCoord[0] = gl_MultiTexCoord0;

}

参数是这样绑定的(请注意,这是Java,我使用的是LWJGL OpenGL绑定:)

代码语言:javascript
复制
int boneMatrixesName = ARBShaderObjects.glGetUniformLocationARB(mProgramShader, "boneMatrixes");

// matrixFloatBuffer is a FloatBuffer of size 128 * 16
ARBShaderObjects.glUniformMatrix4ARB(boneMatrixesName, false, matrixFloatBuffer);

注释掉a = boneMatrixes[int(gl_Normal.x)] * gl_Vertex;行可以将性能提高大约500%。如何提高此顶点着色器的性能?它看起来尽可能的简单和快速。

EN

回答 1

Stack Overflow用户

发布于 2012-04-03 05:16:17

根据GPU供应商和型号的不同,这128个4x4矩阵可能使用多达512个统一组件。这是一个可怕的数量,也浪费了大量的空间,因为实际有用的部分是3x4。您可能希望检出四元数,作为将蒙皮信息上载到GPU并在着色器中将其转化为矩阵的一种方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9983679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档