[英]How to draw single point efficiently
我有一个要模拟的水面。 为了在表面增加雨滴,我只需要画一个点。
我有一个代码(在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);
但是,也许另一种选择是拥有一个静态缓冲区并更改顶点着色器的统一值?
我不想改变我的“算法”,所以让我们专注于画出这一点。
通常,您在VBO中指定顶点坐标。 当绘制少量图元时,选择哪个选项确实没有太大的区别。 与其他渲染操作相比,性能差异应该很小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.