Après une mise à jour à Mavericks, mon logiciel OpenGL exécute le Shader Vertex sur la CPU.

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

  •  20-12-2019
  •  | 
  •  

Question

J'ai un grand logiciel C ++ OpenGL qui fonctionnait avec de très hautes performances sous le lion de montagne. Après une mise à jour à Mavericks et à la recompilation, la performance a considérablement diminué. En passant entre les bandes de triangle et les triangles comme type d'objet étant rendu et en voyant une chute de performance par un facteur 2 ou 3 supplémentaire, j'ai l'impression que le Shader Vertex doit être la cause du problème et donné à quel point il est simpleJe soupçonne qu'il fonctionne dans des logiciels sur la CPU plutôt que sur le GPU. Comment puis-je récupérer les performances que j'avais sous le lion de montagne?Y a-t-il des changements que je dois faire?

La source de mon stop shader est donnée ci-dessous.Il nourrit un shader de géométrie suivant.

#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);

}

Pour 180 000 triangles, je ne peux que recevoir 3FPS lors de l'alimentation en tant que triangles et environ 8 lorsqu'il est alimenté comme des bandes.Le triangle est commandé selon l'algorithme d'optimisation de Forsyth pour l'optimisation du cache de post-transformation.

Était-ce utile?

La solution

Solution: Assurez-vous que tous les tampons de vitesses ajoutés à la VAO sont utilisés dans le Shader Vertex.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top