2

我正在构建我的引擎,假设单个顶点缓冲区的全部内容将在一次调用中绘制,并且两者之间没有状态变化。我遇到的问题是缓冲区将包含许多具有不同纹理的不同网格。

我需要一些方法来告诉像素着色器选择哪个纹理。到目前为止,我看到了 2 个选项:a)在常量缓冲区中设置一种寄存器,该缓冲区将具有顶点 ID 和对象 ID 的数组,例如:顶点 ID > 123 对应于对象 3,顶点 ID > 423 对应于对象4等。这种方法的问题是,对于一个我只能在缓冲区中最多容纳4096个网格。其次,由于顶点着色器必须对所有值进行洗牌,直到找到它所属的位置,因此会出现明显的性能损失。

b) 将对象 ID 作为顶点缓冲区的一部分提供给 IA。我遇到的问题是,在整个网格长度上一遍又一遍地写一个数字似乎是一种浪费。

有什么方法可以为 IA 元素定义变量偏移量,所以我只需要编写一次网格 id 并将其传递给 x 个顶点?还是你能想到的其他方式?

4

1 回答 1

2

您可以将对象 ID 作为顶点格式的一部分,并将对象 ID 放入每个顶点数据中,但您必须测量对内存带宽消耗的性能影响。

于 2013-06-05T15:43:03.363 回答