float4 vs 4浮动在directX中

时间:2016-11-26 22:42:28

标签: directx hlsl

将数据发送到顶点着色器时,directX中的速度更快。

struct VertexInputType
{
    float4 data : DATA; // x,y - POSITION, z - distance, w - size
}

vs

struct VertexInputType
{
    float2 pos : POSITION;
    float distance : DISTANCE;
    float size : SIZE;
}

一个疯狂的猜测是,第一个更快,因为它包装在128位寄存器中。但我认为有更好的答案。

1 个答案:

答案 0 :(得分:2)

如果您正在考虑CPU和GPU之间的内存传输: 如果这些都来自同一个缓冲区对象那么它应该无关紧要。第二个是对着色器已知的数据的解释,它与正在传输的实际数据无关。如果在案例2中使用多个顶点流,它可能具有不同的性能,但这种差异与着色器中使用的格式无关。

如果您担心顶点缓存效率: 在这两种情况下,每个顶点将存储和检索16个字节,因此这里也没有区别。