構造体の多次元配列を NSValue にエンコードしようとしています。
これは構造体です:
typedef struct {
float Position[3];
float Color[4];
} Vertex;
const Vertex Vertices[] = {
// Front
{{1, -1, 0}, {1, 0, 0, 1}},
{{1, 1, 0}, {1, 0, 0, 1}},
(etc...)
オブジェクト「ブロック」に格納するには、NSValue にエンコードする必要があります。
これは私が保存するために行うことです:
Block *newBlock = [[Block alloc] init];
newBlock.blockVertices = [NSValue value:&Vertices withObjCType:@encode(Vertex)];
そしてそれを取り戻すには:
Vertex tempVertices[24];
[newBlock.blockVertices getValue:&tempVertices];
すべてが正常に機能しているように見えるので、次のように値を比較してみます。
for (int i = 0; i < 24; i++){
NSLog(@"%f = %f", Vertices[i].Position[0], tempVertices[i].Position[0]);
NSLog(@"%f = %f", Vertices[i].Position[1], tempVertices[i].Position[1]);
NSLog(@"%f = %f", Vertices[i].Position[2], tempVertices[i].Position[2]);
NSLog(@" ");
}
そして、次のような奇妙な結果が得られます: -1.000000 = -1.998905
どこに問題がありますか?どんな助けでも大歓迎です。