我找到了这篇文章,这有点回答了我的问题,但并不完全是:
How to drag the line segment by selecting the vertex
我想解决的问题:执行顶点选择的现代方式(使用OpenGL 4架构):
我只是猜测它涉及某种缓冲区,其中着色器可以将渲染顶点的结果写入缓冲区,该缓冲区在程序中是可读的。我想知道是否有人已经这样做了,或者至少可以让我朝着正确的方向前进。它需要(理想情况下)快速(在非常大的模型上工作),并使用OpenGL4(没有弃用的功能,如GL_SELECT等)。
答案 0 :(得分:0)
坦率地说:OpenGL是关于将事物绘制到屏幕上,而不是场景管理或选择。
您可以使用现代OpenGL来实现使用变换反馈缓冲区的选择并滥用FBO作为顶点ID缓冲区。
但我真的不会使用OpenGL。至少不是绘图管道。如果需要GPU加速,我会使用OpenCL或OpenGL Compute Shaders将我感兴趣的顶点子集转换为屏幕空间,并从中构建一个屏幕空间2D Kd树。然后使用该KD树执行最近邻居/边界搜索以找到哪些顶点在选择内。如果OpenCL或OpenGL计算着色器不可用,您也可以在CPU上进行转换。