Dopo aver aggiornato a Mavericks, il mio software OpenGL esegue il vertice shader sulla CPU

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

  •  20-12-2019
  •  | 
  •  

Domanda

Ho un grande software OpenGL C ++ che funzionava con prestazioni molto elevate sotto leoni di montagna. Dopo aver aggiornato a Mavericks e ricompilazione, le prestazioni sono diminuite in modo significativo. Passando tra strisce triangolari e triangoli come il tipo di oggetto viene reso e vedendo un calo delle prestazioni di un ulteriore fattore 2 o 3, sono sotto l'impressione che il vertice shader deve essere la causa del problema e dato quanto sia semplice, Sospetto che sia in esecuzione in software sulla CPU piuttosto che sulla GPU. Come posso recuperare le prestazioni che ho avuto sotto il leone di montagna?Ci sono alcuni cambiamenti che devo fare?

La fonte del mio shader vertice è riportata di seguito.Si nutre di una seguente shader della geometria.

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

}
.

Per 180.000 triangoli posso solo ottenere 3 fps quando si nutrono dei triangoli e circa 8 seduti come strisce.Il triangolo è ordinato secondo l'algoritmo di ottimizzazione di Forsyth per l'ottimizzazione della cache di trasformazione post.

È stato utile?

Soluzione

Soluzione: assicurati che tutti i buffer vector che vengono aggiunti al VAO vengano utilizzati nel vertice shader.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top