作者reddragont (nobody)
看板C_and_CPP
标题[问题] 指标阵列取值遇到的问题
时间Sat Jun 20 17:05:58 2009
小弟我目前再对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
1F:推 VictorTom:似乎没办法, OGL的这个API就是没有边界的判断与检查.y 06/20 17:46
2F:→ VictorTom:AP要自己保证不可以存取超过记忆体范围的资料.... 06/20 17:47
3F:→ VictorTom:一定要说一个范围dump, 可能要等到drawArray/Element时 06/20 17:47
4F:→ VictorTom:依据AP所下的范围, 才回来决定到底需要dump多少范围:) 06/20 17:48
5F:推 VictorTom:也许您可以查查 GLIntercept 或 gDEBugger 怎样做的@_@" 06/20 17:51
6F:→ VictorTom:如果AP用了VBO, 因为bufferData有明确的size反而好解决. 06/20 17:52
7F:→ VictorTom:相似的是, 这时pointer是NULL, 您都得搭配其他API里运 06/20 17:53
8F:→ VictorTom:作时的资讯, 才有办法完整dump到这些data....:) 06/20 17:53
9F:→ VictorTom:更正一下, 用VBO时, pointer是offset, 不一定为NULL.Orz 06/20 17:54