Depois de actualizar para o Mavericks, meu OpenGL software executa o shader de vértice na CPU
-
20-12-2019 - |
Pergunta
Eu tenho um grande C++ com OpenGL software que foi executado com desempenho muito elevado sob o Mountain Lion.Depois de actualizar para o Mavericks e recompilar, o desempenho caiu significativamente.Alternando entre Triângulo e fitas de triângulos como o tipo de objeto que está sendo processado e, ao ver uma queda no desempenho por um fator de 2 ou 3, eu estou sob a impressão de que o shader de vértice deve ser a causa do problema e dada a forma como ele é simples, eu suspeito que ele está sendo executado no software da CPU, ao invés de incluir na GPU.Como posso recuperar o desempenho que eu tinha sob o Mountain Lion?Existem algumas alterações que eu preciso fazer?
A fonte do meu shader de vértice é dado abaixo.Alimenta-se a seguinte geometry shader.
#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);
}
De 180.000 triângulos eu só posso ficar 3 FPS quando a alimentação como triângulos e cerca de 8 quando alimentado como tiras.O triângulo são ordenadas de acordo com Forsyth do algoritmo de otimização por pós transformar cache de otimização.
Solução
Solução:Certifique-se de que todas as vetor de buffers que são adicionados para o VAR são utilizados no shader de vértice.