3

我正在使用本教程:http ://www.opengl-tutorial.org/beginners-tutorials/tutorial-4-a-colored-cube/

这是练习:一旦你完成了,让颜色在每一帧都改变。您必须每帧调用 glBufferData 。确保之前绑定了适当的缓冲区(glBindBuffer)!

我不知道该怎么做。我知道如何修改颜色缓冲区来改变颜色,但不知道如何每帧改变它们。任何人都可以帮忙吗?

4

1 回答 1

3

正如练习所述:呼叫glBufferData!您已经完成了第一次设置颜色。

更改数据后,使用 重新绑定颜色缓冲区glBindBuffer,然后重复调用glBufferData- 两者都使用与第一次相同的参数 - 您的新颜色缓冲区数据将被发送到 GPU。

例如,关于如何实际更改数据,您可以使用如下循环在颜色数据数组的每个单元格中插入相同的值:

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 回答