我有一个想要模拟的水面。为了在表面上添加雨滴,我只需要绘制一个点。
我有一个代码(在 OpenGL 2.0 中):
float rainDrop[3] = { pos };
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, rainDrop);
glDrawArrays(GL_POINTS, 0, 1);
glDisableVertexAttribArray(0);
如何将此代码移植到 OpenGL 3.* ?当然有效。
我的想法是只使用简单的缓冲区(带有一个元素)并映射它并绘制这个单点:
float rainDrop[3] = { pos };
glBindVertexArray(vaoID);
glBindBuffer(GL_ARRAY_BUFFER, vboID);
glBufferSubData(GL_ARRAY_BUFFER, 0, 3*sizeof(float), rainDrop);
glDrawArrays(GL_POINTS, 0, 1);
glBindVertexArray(0);
但也许另一种选择是拥有一个静态缓冲区并更改顶点着色器的统一值?
我不想改变我的“算法”,所以让我们专注于绘制这一点。