0

可能重复:
如何找到 sizeof(指向数组的指针)

对于任何了解 Objective-C 的人,我会尽量保持这个通用性,问题的根源在哪里(或者它可能只是在 C 中?),我会在提供上下文的同时尽可能避免使用 OpenGL。

我将 3D 对象的顶点数据存储在这样的GLfloat数组中

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()for 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)];

而我真的想避免传递附加参数。

有任何想法吗?谢谢你的时间。

4

1 回答 1

3

指针和数组不是一回事。不幸的是,您必须自己传递大小,或者作为额外参数,或者作为结构或对象的一部分。

有用的阅读:http ://c-faq.com/aryptr/aryparmsize.html

于 2013-01-28T06:16:13.247 回答