directX中的浮动4 vs 4浮动

directX中的浮动4 vs 4浮动,directx,hlsl,Directx,Hlsl,在directX中将数据发送到顶点着色器时,速度更快 struct VertexInputType { float4 data : DATA; // x,y - POSITION, z - distance, w - size } vs 一个粗略的猜测是第一个更快,因为它包含在128位寄存器中。但我认为有一个更好的答案。如果您正在考虑CPU和GPU之间的内存传输: 如果这些都来自同一个缓冲区对象,那么就不重要了。第二个只是着色器已知数据的解释,与传输的实际数据无关。在案例2中使用多个顶

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

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


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

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

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

根据常量缓冲区()的打包规则,它们将被平等地打包到float4寄存器中,因此我假设没有任何区别,但第二个字节更易于读取和维护:)这是这里的输入汇编程序,所以包装规则不适用
struct VertexInputType
{
    float2 pos : POSITION;
    float distance : DISTANCE;
    float size : SIZE;
}