gpt4 book ai didi

objective-c - sizeof() 不适用于传递给 GLfloat[] 数组的引用

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:08 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
How to find the sizeof(a pointer pointing to an array)

对于了解 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) 没有返回正确的值。 (我同样省略了所有绘图代码,因为它在这里无关紧要,只是它需要为 glDrawArrays() 使用 sizeof()

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

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

有什么想法吗?感谢您的宝贵时间。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com