Mavericksにアップデートした後、My OpenGLソフトウェアはCPU上の頂点シェーダを実行します

StackOverflow https://stackoverflow.com//questions/21001453

  •  20-12-2019
  •  | 
  •  

質問

私はマウンテンライオンの下で非常に高い性能で走っていた大きなC ++ OpenGLソフトウェアを持っています。 Mavericksに更新して再コンパイルした後、パフォーマンスは大幅に削除されました。 レンダリングされているオブジェクトの種類として三角ストリップと三角形を切り替え、さらに2または3でパフォーマンスの低下を見ることで、頂点シェーダが問題の原因である必要があるという印象の下で、、GPUではなくCPU上でソフトウェアで実行されていると思われます。 私はマウンテンライオンの下で私が持っていたパフォーマンスを回復することができますか?私がする必要があるいくつかの変更はありますか?

私の頂点シェーダのソースを以下に示します。それは次のジオメトリシェーダを供給します。

#version 410

uniform mat3 normalMatrix;
uniform mat4 modelMatrix;
uniform mat4 modelProjMatrix;
uniform vec3 color  = vec3(0.4,0.4, 0.4);

in vec3 vertex;
in vec3 normal;

out NodeData {
    vec3 normal, position;
    vec4 refColor;
} v;

void main()
{
    vec4 position = modelMatrix * vec4(vertex, 1.0);
    vec3 vertNormal = normal;
    v.normal = normalize(normalMatrix * vertNormal);
    v.position = position.xyz;

    v.refColor = vec4(color, 1.0);
    gl_Position = modelProjMatrix * vec4(vertex, 1.0);

}
.

180,000の三角形には、三角形として給電すると3FPSを取得できます。三角形は、転帰転帰キャッシュ最適化のためのフォーサの最適化アルゴリズムに従って順序付けされています。

役に立ちましたか?

解決

解決策:VAOに追加されたすべてのベクトルバッファが頂点シェーダに使用されていることを確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top