2016-09-24 11 views
0

OpenGLで頂点をプロットしようとしましたが、頂点からTaskTwoVerticesNに1つの要素しか割り当てられません。私は間違って何をしていますか?私はあなたがすべてのコードを必要とし、私はそれを電子メールまたはこちらベクトルに1つの値しか追加されていません

typedef struct Vertex { 
    float XYZW[4]; 
    float RGBA[4]; 
    void SetCoords(float *coords) { 
     XYZW[0] = coords[0]; 
     XYZW[1] = coords[1]; 
     XYZW[2] = coords[2]; 
     XYZW[3] = coords[3]; 
    } 
    void SetColor(float *color) { 
     RGBA[0] = color[0]; 
     RGBA[1] = color[1]; 
     RGBA[2] = color[2]; 
     RGBA[3] = color[3]; 
    } 
}; 

Vertex Vertices[] = 
{ 
    { { 1.0f, 1.0f, 0.0f, 1.0f },{ 0.0f, 0.0f, 0.0f, 1.0f } }, // 0 
    { { 0.0f, 1.4f, 0.0f, 1.0f },{ 0.0f, 0.0f, 1.0f, 1.0f } }, // 
}; 

std::vector<Vertex>TaskTwoVerticesN; 

void createObjects(void) 
{ 
    TaskTwoVerticesN.clear(); 
    // and this, running them one by one in a for loop does not work either 
    TaskTwoVerticesN.insert(TaskTwoVerticesN.begin(), Vertices, Vertices + (sizeof(Vertices)/sizeof(Vertices[0]))); 
} 

main(){ 
    createObjects(); 
} 

答えて

1

を投稿することができた場合、実際に

int main(){ 
    createObjects(); 
    std::cout << ((sizeof(Vertices)/sizeof(Vertices[0]))) << std::endl; 
    std::cout << TaskTwoVerticesN[0].XYZW[1] << std::endl; 
    std::cout << TaskTwoVerticesN[1].XYZW[1] << std::endl; 
    return 0; 
} 

を実行するのに十分なコードをドクターすると、この出力に

2 
1 
1.4 
リード教えてください

したがって、両方の要素が意図したとおりに挿入されているようです。私が実際に変更したのは、main()、いくつかのstd :: coutと構造体のtypedefを削除することだけでした。

合計で、挿入は問題ありません。

+0

私のコードはまだ実行されていません...! 型のベクトルでテストしてもうまくいきます...しかし、このタイプでは動作しません....またpush_back()で試してみましたが、失敗しました –

+0

私のコード全体を投稿しますか? –

+0

遅れて申し訳ありません。投稿するか、私に送ると、私は見て喜んでください。 –

関連する問題