可能重复:
How to find the sizeof(a pointer pointing to an array)
我会尽量保持这种通用性,对于那些知道Objective-C的人来说,问题根深蒂固(或者可能只是在C?),并且我会在提供上下文的同时避免尽可能多的OpenGL。
我正在存储GLfloat
数组中的3D对象的顶点数据,如此
GLfloat teapot[] = { 1.0, 0.0, .... 0.0 };
(为简洁省略了实际值)
我正在打这样的电话
[self drawObject:teapot];
用于像这样定义的方法
-(void) drawObject:(GLfloat *)object {
NSLog(@"%ld %ld", sizeof(object), sizeof(teapot));
}
当然,目标是绘制内容,但它无法正常工作,因为sizeof(object)
没有返回正确的值。 (我同样省略了所有绘图代码,因为它与此无关,除了它需要sizeof()
使用glDrawArrays()
。
NSLog()
的输出如下所示:
sizeof object = 4, sizeof teapot = 6336
显示传递的object
的大小与直接调用teapot
的大小不同。这很奇怪,因为引用工作正常,即glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, object)
工作正常,所以它肯定是在对象中读取。目前,我还必须将对象的大小作为整数传递,以使glDrawArrays
起作用,这有点俗气。传递的代码如下所示
[self drawObject:teapot ofSize:(int)sizeof(teapot)];
虽然我真的想避免传递附加参数。
有什么想法吗?谢谢你的时间。
答案 0 :(得分:3)
指针和数组不是一回事。不幸的是,您必须自己传递大小,作为额外参数,或作为结构或对象的一部分。