Mavericks로 업데이트 한 후 OpenGL 소프트웨어가 CPU에서 정점 쉐이더를 실행합니다.
-
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에 추가 된 모든 벡터 버퍼가 버텍스 쉐이더에서 사용되었는지 확인하십시오.
제휴하지 않습니다 StackOverflow