這是一個更一般的理論問題,我只是不能似乎繞到我的頭的腦袋,因此不適解釋什麼我試着去做。可可 - 的OpenGL ES - 包裝紙我周圍的C-陣列
我寫一個3D遊戲引擎與可可和OpenGL ES。我試圖確定存儲我的3D模型的頂點數據的最佳方式(每個頂點都有一個x,y和z位置)。
以前,我被存儲各頂點作爲一個單獨的自定義對象(AEVertex
),該對象具有一個x,y,和z的實例變量。問題是我正在使用命令glDrawArrays()
,它將C-Array的地址作爲第一個參數。此C-陣列被認爲是一維陣列中存儲的所有VERT位置在演替(垂直1的x位置,VERT 1的y位置,VERT 1的z位置,VERT 2的x位置,VERT 2的y位置,VERT 2的Z位置等等)。
我面臨的問題是,我必須從每個單獨的頂點對象收集給定模型的所有頂點數據,並創建一個足夠大的C數組來存儲所有這些頂點/用頂點填充C數組數據,然後傳入這個數組。這顯然會使事情減慢很多,因爲我基本上爲每個模型分配兩次內存。
所以我想要做的只是有一個類AEMesh,它有一個C-Array實例變量,存儲給定的AEMesh對象的所有vertexdata。我對這個問題的是,據但是我知道它只能申報一個固定大小的C-Array實例變量,一個)我所有的車型都會有頂點的不同數量和b)我不知道有多少綠黨每個模型直到在運行時讀取模型數據。
所以,我的問題:
是否有某種方式來創建一個可變的,動態的C-陣列爲對象的實例變量?因此,允許我爲從給定的AEMesh模型文件讀入的每個頂點添加新的數組索引?
如果不是,我想知道是否可以在AEMesh的初始化之外創建vertexdata C-Array,並且在實例化AEMesh時指向nil的指針實例變量,並且在創建後的C-Array之後重新命名C數組被聲明。