gpt4 book ai didi

c++ - 帮我评价一下这个选角

转载 作者:太空狗 更新时间:2023-10-29 20:01:20 26 4
gpt4 key购买 nike

我在 PowerVR 网格绘制代码中找到了这个,但我真的不知道如何阅读它。

&((unsigned short*)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]

这是怎么回事?这是对 void cast 的引用作为无符号短指针然后偏移 (3*mesh(etc...) + batchNum) 吗?它打破了我的大脑。

它是在 glDrawElements 调用的上下文中找到的:

glDrawElements(GL_TRIANGLES, i32Tris * 3, GL_UNSIGNED_SHORT, 
&((unsigned short*)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]);

最佳答案

让我们从内到外。

(unsigned short*)0

这是将 0 转换为无符号短指针。这将用于计算内存偏移量,根据 unsigned short 的大小计算。

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]]

关于c++ - 帮我评价一下这个选角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1645309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com