packQuantizedForVertexBuffer()¶
packQuantizedForVertexBuffer(
values,num_points):Uint8Array
Format.QUANTIZED のレコードを頂点バッファのレイアウトへ詰め替える
D3D11 には 3 成分の 8bit / 16bit 正規化頂点フォーマットが無く、Metal は頂点属性の オフセットに 4 バイト境界を要求する。転送形式のまま束縛すると ANGLE がタイルごとに 全点を詰め替えて別バッファを持つため、転送量を削っても GPU 側のメモリと CPU 時間が かえって増える。4 成分かつ 4 バイト境界に揃えて渡すことでこの経路を避ける。
転送形式 頂点バッファ
0 6 9 10 11 12 0 6 8 12
+------+-----+--+--+--+ +------+----+----------+
| pos | col |in|rs|rs| | pos |pad | col + in |
+------+-----+--+--+--+ +------+----+----------+
u16x3 u8x3 u8 u8 u8 u16x3 u16 u8x4
CPU から読む用途には転送形式のままの Data.body を使う。
Parameters¶
| Parameter | Type |
|---|---|
values |
Uint8Array<ArrayBufferLike> |
num_points |
number |
Returns¶
Uint8Array