Mavericks로 업데이트 한 후 OpenGL 소프트웨어가 CPU에서 정점 쉐이더를 실행합니다.

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

  •  20-12-2019
  •  | 
  •  

문제

산 사자 아래에서 매우 높은 성능으로 실행중인 큰 C ++ OpenGL 소프트웨어가 있습니다. Mavericks 및 Recompiling으로 업데이트 한 후 성능이 크게 떨어졌습니다. 삼각형 스트립과 삼각형을 렌더링하는 물체 유형으로 전환하여 추가 팩터 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를 얻을 수 있으며 스트립으로 공급할 때 약 8 개를 얻을 수 있습니다.삼각형은 포스트 변환 캐시 최적화를 위해 Forsyth의 최적화 알고리즘에 따라 주문됩니다.

도움이 되었습니까?

해결책

해결책 : VAO에 추가 된 모든 벡터 버퍼가 버텍스 쉐이더에서 사용되었는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top