-2

OpenGLでいくつかの三角形を描こうとしています。これは私が試した最初の方法であり、これは機能します。

...
StaticVertexData vertices[6] = {
        {{ 255,   0,   0, 255}, { -0.90, -0.90, 0.0f}},
        {{   0, 255,   0, 255}, {  0.85, -0.90, 0.0f}},
        {{   0,   0, 255, 255}, { -0.90,  0.85, 0.0f}}
}
...
glGenBuffers(numBuffers, buffers);
glBindBuffer(GL_ARRAY_BUFFER, buffers[ArrayBuffer]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices),
                &vertices[0], GL_DYNAMIC_DRAW);
...

これはうまく機能し、画面に三角形が 1 つ表示されます。

ただし、malloc で頂点配列をヒープに割り当てると、ウィンドウが空白になります。

...
StaticVertexData* vertices = (StaticVertexData*) malloc(verticesCount*sizeof(StaticVertexData));
vertices = (StaticVertexData[6]) {
    {{ 255,   0,   0, 255}, { -0.90, -0.90, 0.0f}},
    {{   0, 255,   0, 255}, {  0.85, -0.90, 0.0f}},
    {{   0,   0, 255, 255}, { -0.90,  0.85, 0.0f}}
};
...
// same as in the previous example

どうしてこれなの?ヒープから GPU にデータを送信することは不可能ですか? 最初にスタックに割り当てる必要がありますか?

4

1 に答える 1