3

私はこのチュートリアルを使用しています:http ://www.opengl-tutorial.org/beginners-tutorials/tutorial-4-a-colored-cube/

そして、これが演習です。それが終わったら、フレームごとに色を変更します。フレームごとにglBufferDataを呼び出す必要があります。!の前に、適切なバッファーがバインドされていることを確認してください(glBindBuffer)。

これを行う方法がわかりません。カラーバッファを変更して色を変更する方法は知っていますが、フレームごとに変更する方法はわかりません。誰か助けてもらえますか?

4

1 に答える 1

3

演習で述べているように: Call glBufferData! 初めて色を設定するために、すでにそれを行っています。

データを変更した後、カラー バッファを で再バインドし、最初と同じ引数を使用してglBindBufferへの呼び出しを繰り返します。新しいカラー バッファ データが GPU に送信されます。glBufferData

実際にデータを変更する方法については、たとえば、次のようなループを使用して、カラー データ配列の各セルに同じ値を挿入できます。

for (int i = 0; i < 12 * 3; ++i) // Replace 12 with the correct amount of points if it's wrong, the 3 is the amount of components per colour
{
    g_color_buffer_data[i] = 1.0f; // Replace 1.0f with your desired colour component value
}

または、色の各コンポーネントに特定の値を挿入する場合:

for (int i = 0; i < 12; ++i)
{
    g_color_buffer_data[i*3+0] = 1.0f; // i * 3 is the start of a colour
    g_color_buffer_data[i*3+1] = 0.5f; // i * 3 + 1 is the second component
    g_color_buffer_data[i*3+2] = 0.0f; // This you should be able to figure out
    // Again, replace component values with your own ones
}

glBufferDataこれらのループは、レンダリング ループ内のへの呼び出しの前に配置する必要があります。

于 2012-12-09T20:08:26.693 に答える