小编A. *_*ats的帖子

在HLSL中使用一个包含所有相关数据或几个较小缓冲区的大缓冲区更好

如果在使用HLSL或其他高级着色器语言将数据发送到GPU时,如果有一个单独的缓冲区,我对代码设计和性能方面感兴趣.

这是特定着色器需要具有大量可变数据的地方,这些数据在运行时期间会发生变化,因此需要通过缓冲区传递信息.

我举一个非常基本的例子:

cbuffer SomeLargeBuffer : register(cb0)
{
    float3 data;
    float someData;
    float4 largeArray[2500];
    float moreData;
    ...
    ...
    ... 
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者拥有

cbuffer SamllerBuffer: register(cb0)
{
    float3 data;
    float someRelatedData;

}

cbuffer SecondSmallerBuffer : register(cb1)
{

    float4 largeArray[2500];
    float moreData;

}

cbuffer ThirdBuffer: register(cb2)
{
    ...
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

directx shader hlsl directx-11

4
推荐指数
1
解决办法
319
查看次数

标签 统计

directx ×1

directx-11 ×1

hlsl ×1

shader ×1