Après une mise à jour à Mavericks, mon logiciel OpenGL exécute le Shader Vertex sur la CPU.
-
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.
La solution
Solution: Assurez-vous que tous les tampons de vitesses ajoutés à la VAO sont utilisés dans le Shader Vertex.