可能重复:
如何找到 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)];
而我真的想避免传递附加参数。
有任何想法吗?谢谢你的时间。