這個問題最初出現在我的related question,我在閱讀一些代碼時遇到了麻煩。答案竟然是這條線如何使用指針作爲偏移量?
&((GLushort *)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]
評估爲一個指針。而且它在
glDrawElements(GL_TRIANGLES, i32Tris * 3, GL_UNSIGNED_SHORT, &((unsigned short*)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]);
在那裏解釋爲偏移繪製頂點索引的子集使用。
我的代碼目前需要我手動完成一些openGL在glDrawElements中做的事情,我不知道如何使用指針作爲偏移量。 glDrawElements使用索引數組(在我的代碼名爲vertexIndices),所以我想是這樣的:
vertexIndices[&((GLushort *)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]]
但顯然沒有。
編輯1: 我只是嘗試這樣做,它編譯...還是不知道這是否是正確的,但。 vertexIndices + (uint) &((GLushort *)0)[3 * mesh.sBoneBatches.pnBatchOffset[batchNum]]
我想我對'指針作爲偏移量'的整個想法並不是很滿意。我想我可以把所有的指針都看作0的偏移量,但是這對我的語法仍然沒有幫助:-p。 – spencewah 2009-11-02 21:42:21
當我看到您的原始問題時,我想現在我想的是同樣的東西 - 當您的頂點數組不是有效的內存地址時,如果它試圖訪問傳入的頂點數組,glDrawElements不會崩潰(並且僅僅是一個偏移量)? – 2009-11-02 21:54:50
我很抱歉,這個問題對於細節有點簡單,它是另一個問題的擴展(在後面有鏈接),它充分探討了爲什麼glDrawElements在傳遞這個無效內存地址時不會崩潰。 – spencewah 2009-11-02 22:24:54