float4 与 directX 中的 4 个浮点数
float4 vs 4 floats in directX
将数据发送到顶点着色器时,在 directX 中哪个更快。
struct VertexInputType
{
float4 data : DATA; // x,y - POSITION, z - distance, w - size
}
对比
struct VertexInputType
{
float2 pos : POSITION;
float distance : DISTANCE;
float size : SIZE;
}
一个疯狂的猜测是说第一个更快,因为它包含在一个 128 位寄存器中。但我认为有更好的答案。
如果您正在考虑 CPU 和 GPU 之间的内存传输:
如果这些都来自同一个缓冲区对象,那么它应该无关紧要。第二个只是对着色器已知数据的解释,与传输的实际数据无关。在情况 2 中使用多个顶点流的情况下,它可能具有不同的性能,但这种差异与着色器中使用的格式无关。
如果您担心顶点缓存效率:
在这两种情况下,每个顶点将存储和检索 16 个字节,因此这里也没有区别。
将数据发送到顶点着色器时,在 directX 中哪个更快。
struct VertexInputType
{
float4 data : DATA; // x,y - POSITION, z - distance, w - size
}
对比
struct VertexInputType
{
float2 pos : POSITION;
float distance : DISTANCE;
float size : SIZE;
}
一个疯狂的猜测是说第一个更快,因为它包含在一个 128 位寄存器中。但我认为有更好的答案。
如果您正在考虑 CPU 和 GPU 之间的内存传输: 如果这些都来自同一个缓冲区对象,那么它应该无关紧要。第二个只是对着色器已知数据的解释,与传输的实际数据无关。在情况 2 中使用多个顶点流的情况下,它可能具有不同的性能,但这种差异与着色器中使用的格式无关。
如果您担心顶点缓存效率: 在这两种情况下,每个顶点将存储和检索 16 个字节,因此这里也没有区别。