假设我正在定义一个顶点结构。我可以通过将顶点的 RGBA 颜色打包成一个无符号整数来保持顶点结构很小。因此:
struct Vertex
{
float pos[3];
float normal[3];
float texcoord[2];
unsigned int color; // RGBA
};
然而,当顶点到达我的顶点着色器时,它将被转换为 4 浮点值:GLSL 中的 vec4 或 HLSL 中的 float4。大概这种类型转换在 GPU 上需要一些时间。
因此将顶点的颜色属性定义为 4 浮点数会更快,从而避免转换吗?
...
float color[4];
...
还是这种颜色的较大内存大小会降低 GPU 缓存的效率并导致渲染速度变慢?