Пойдем изнутри.
(unsigned short*)0
Это приведение 0
к беззнаковому короткому указателю. Это будет использоваться для вычисления смещения памяти, вычисленного в терминах размера короткого знака без знака.
3 * mesh.sBoneBatches.pnBatchOffset[batchNum]
Это, по-видимому, смещение в памяти некоторой партии треугольников. Треугольник состоит из 3 шорт, так что похоже, что они хранят смещение с точки зрения количества треугольников, а затем умножают на 3, чтобы получить количество шорт.
((unsigned short*)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]
Теперь используется указатель 0
, чтобы найти ячейку памяти данного смещения. Обычно это возвращает значение этой области памяти, но они хотят, чтобы указатель передавался в glDrawElements, поэтому используйте оператор &
, чтобы получить указатель на эту область памяти:
&((unsigned short*)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]