1

着色器输入/输出变量的顺序和/或大小是否会对内存使用或性能产生任何影响?例如,这些是:

// vert example:
out vec4 colorRadius;

// tess control example:
out vec4 colorRadius[];

// frag example:
in smooth vec4 colorRadius;

相当于这些:

// vert example:
out vec3 color;
out float radius;

// tess control example:
out vec3 color[];
out float radius[];

// frag example:
in smooth vec3 color;
in smooth float radius;

第二种形式是否有任何额外费用,或者编译器会将它们一起打包在内存中并完全相同对待?

4

1 回答 1

4

编译器可以将这些东西打包在一起。但这不是必须的,而且几乎没有证据表明编译器通常会这样做。所以顶版至少不会比底版慢。

同时,这更像是一种微优化。所以除非你知道这是一个瓶颈,否则就让它过去吧。最好在知道问题出在哪里时编写清晰、易于理解的代码并对其进行优化,而不是在不知道是否会成为问题的情况下对其进行优化。

于 2012-05-08T18:24:31.197 回答