[問題] 指標陣列取值遇到的問題

看板C_and_CPP (C/C++)作者 (nobody)時間16年前 (2009/06/20 17:05), 編輯推噓2(207)
留言9則, 1人參與, 最新討論串1/1
小弟我目前再對opengl的function做修改(不過問題跟OPENGL沒啥關係) 假設我有一個function: void glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) size代表傳入的每個頂點記載多少筆資料(2~4 不重要) type代表這個傳入的陣列是甚麼型態的陣列(short, int, float...etc) stride代表記憶體的offset(我知道這邊怎麼做~假設傳入連續陣列~offset為0) *pointer代表陣列起始位置~type其實就是void* 而我的問題是我要拿出這個陣列所有的值並DUMP出來 可是我只有pointer這個起始指標~沒有他陣列長度的資訊~所以我並不知道到要拿幾個 才停下來~而且我又沒辦法去改變她function的傳入資料 ex:float face[]={ //記載了一個面的頂點座標 -0.5f, -0.5f, 0.5f, //而我想將裡面12個值都DUMP出來 0.5f, -0.5f, 0.5f, //12個只是例子~個數是隨便定的= = -0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, } glVertexPointer(3,float,0,face) { do what ever it does dump(face,float); } 在dump那裏~我無法去判斷說她陣列裡到底有幾個數值 所以我目前能想到的方法就是一次dump出很多的值~後面哩哩摳摳不在範圍內的也寫出來 請問各位有甚麼更好的方法嗎?? 謝謝囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.171.53.182

06/20 17:46, , 1F
似乎沒辦法, OGL的這個API就是沒有邊界的判斷與檢查.y
06/20 17:46, 1F

06/20 17:47, , 2F
AP要自己保證不可以存取超過記憶體範圍的資料....
06/20 17:47, 2F

06/20 17:47, , 3F
一定要說一個範圍dump, 可能要等到drawArray/Element時
06/20 17:47, 3F

06/20 17:48, , 4F
依據AP所下的範圍, 才回來決定到底需要dump多少範圍:)
06/20 17:48, 4F

06/20 17:51, , 5F
也許您可以查查 GLIntercept 或 gDEBugger 怎樣做的@_@"
06/20 17:51, 5F

06/20 17:52, , 6F
如果AP用了VBO, 因為bufferData有明確的size反而好解決.
06/20 17:52, 6F

06/20 17:53, , 7F
相似的是, 這時pointer是NULL, 您都得搭配其他API裡運
06/20 17:53, 7F

06/20 17:53, , 8F
作時的資訊, 才有辦法完整dump到這些data....:)
06/20 17:53, 8F

06/20 17:54, , 9F
更正一下, 用VBO時, pointer是offset, 不一定為NULL.Orz
06/20 17:54, 9F
文章代碼(AID): #1AFAPtg7 (C_and_CPP)
文章代碼(AID): #1AFAPtg7 (C_and_CPP)