我正在使用本教程:http ://www.opengl-tutorial.org/beginners-tutorials/tutorial-4-a-colored-cube/
这是练习:一旦你完成了,让颜色在每一帧都改变。您必须每帧调用 glBufferData 。确保之前绑定了适当的缓冲区(glBindBuffer)!
我不知道该怎么做。我知道如何修改颜色缓冲区来改变颜色,但不知道如何每帧改变它们。任何人都可以帮忙吗?
我正在使用本教程:http ://www.opengl-tutorial.org/beginners-tutorials/tutorial-4-a-colored-cube/
这是练习:一旦你完成了,让颜色在每一帧都改变。您必须每帧调用 glBufferData 。确保之前绑定了适当的缓冲区(glBindBuffer)!
我不知道该怎么做。我知道如何修改颜色缓冲区来改变颜色,但不知道如何每帧改变它们。任何人都可以帮忙吗?
正如练习所述:呼叫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
,在渲染循环内。