我有一个大的C ++ OpenGL软件,在山狮下具有非常高的性能。 在更新Mavericks并重新编译后,性能显着下降。 通过在三角带和三角形之间切换作为渲染的对象的类型并通过另一个因素2或3看到性能下降,我在印象中,顶点着色器必须是问题的原因,并且给定它有多简单,我怀疑它是在CPU上的软件上运行而不是GPU。 如何恢复山狮下的表现?我需要做一些改变吗?

我的顶点着色器的来源如下。它提供了以下几何着色器。

#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