【发布时间】:2017-01-21 21:35:56
【问题描述】:
我有一个简单的二维三角形显示在屏幕上,我想每帧更新颜色缓冲区数据,所以三角形的颜色不断变化,但我不知道如何有效地更新数据。
这是颜色缓冲区的代码:
GLfloat colourVert[] = {
0.0f, 1.0f, 0.0f,
1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f
};
GLuint colourBuffer;
glGenBuffers(1, &colourBuffer);
glBindBuffer(GL_ARRAY_BUFFER, colourBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(colourVert), colourVert, GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, 0);
我需要在这些行中添加一些东西还是需要修改着色器,谁能解释一下,谢谢你的帮助。
【问题讨论】:
-
你应该决定你想要哪种类型的OpenGL,因为答案很大程度上取决于这个。并请说明是哪个版本。例如,es 3.0 使用 VAO 来存储属性绑定,而 2.0 则没有。
-
@BDL 在IOS opengl es 2.0 完全支持VAOs 但不支持Android
-
glMapBuffer 似乎是正确的解决方案:khronos.org/registry/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml