0

私は Open GL の初心者ですが、単純な三角形、四角形などは既に描画できます。

私の問題は次のとおりです。

私は構造とその構造の静的配列を持っています

typedef struct {
    GLKVector3 Position;
} Vertex;

const Vertex Vertices[] = {
    {{0.0, 0.0, 0.0}},
    {{0.5, 0.0, 0.0}},
    {{0.5, 0.5, 0.0}},
    {{0.0, 0.5, 0.0}},
    {{0.0, 0.0, 0.0}}
};

...some code

しかし、動的に作成する頂点の配列が必要です... :(

例:

typedef struct {
    GLKVector3 Position;
} Vertex;

  instance variable - iVertices of type Vertex

- (void) viewDidLoad {
   int numOfVertices = 0;
   Vertex vertices[] = {{0.0, 0.0, 0.0}};
   [self addVertex:vertices atIndex:numOfVertices];
   numOfVertices ++;
   Vertex vertices[] = {{0.5, 0.0, 0.0}};
   [self addVertex:vertices atIndex:numOfVertices];
   numOfVertices ++;
   Vertex vertices[] = {{0.5, 0.5, 0.0}};
   [self addVertex:vertices atIndex:numOfVertices];
}

- (void) addVertex:(Vertex) vertex atIndex:(int) num {
   iVertices[num] = vertex;
}

...and somewhere
glBufferData(GL_ARRAY_BUFFER,
             sizeof(iVertices),
             iVertices,
             GL_STATIC_DRAW);

これはObjective-Cでは許可されていないか、方法がわかりません:(

mallocもcallowも役に立たない...

どうもありがとう!

4

1 に答える 1

0

ここでの主な問題は、サイズ 8 を返すポインターであるため、インスタンス変数である配列のサイズを取得できないことです。代わりに、配列のカウントを別の場所に保存する必要があります。別のインスタンス変数 (または numOfVertices を使用) を使用し、それをsizeof(int). したがってglBufferData(GL_ARRAY_BUFFER, numOfVariable*sizeof(int), iVertices, GL_STATIC_DRAW);、あなたのケースでは次のようなものが機能するはずです。

于 2013-09-30T13:17:09.507 に答える