是否存在使用glDrawArrays()绘制具有不同大小的多个点的无着色器方法?

时间:2018-11-21 11:23:45

标签: opengl

我正在用这样的颜色绘制点云:

    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 个答案:

答案 0 :(得分:1)

如果有的话,那将是非常低效的!

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

如果您不明白我的建议,那么必须先学习现代的OpenGL渲染方式:)