有没有一种无阴影的方法可以使用glDrawArrays()绘制不同大小的多个点



我用绘制了一个具有不同颜色点的点云

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);

glVertexPointer(3, GL_FLOAT, 0, vertices.get());
glColorPointer(3, GL_FLOAT, 0, colors.get());

glDrawArrays(GL_POINTS, 0, n);

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);

有没有办法告诉glDrawArrays(或默认着色器(对每个点的大小使用另一个客户端状态?

如果有的话,效率会非常低!

  1. 在核心上下文=>OpenGL 3.3及以上版本中使用可编程管道
  2. 使用所有顶点(点(创建缓冲区
  3. 使用每个点的大小创建缓冲区
  4. 将缓冲区2和3传递到顶点着色器。将大小指定给全局gl_PointSize

如果你没有得到我的建议,你必须从学习现代OpenGL渲染方式开始:(

最新更新