在OpenGL中识别可见顶点

tat*_*at0 6 opengl visibility occlusion vertices vertex

识别特定视点可见顶点的最有效方法是什么?

我有一个由几个3D模型组成的场景.我想将标识符附加到每个顶点(ModelID,VertexID),然后从各个视点生成2D图像,并为每个图像生成可见顶点标识符的列表(实际上这是用于图像处理应用程序).

最初我想在顶点法线和摄像机视图矢量之间执行点积,以确定顶点是否面向摄像机,但是如果模型被另一个对象遮挡,则此测试将不起作用.

提前致谢

gen*_*ult 4

  1. 禁用所有照明/纹理
  2. 渲染几何体 ( GL_TRIANGLES) 以填充 Z 缓冲区
  3. 再次渲染几何体 ( GL_POINTS),为每个顶点选择不同的 RGB 颜色,该颜色映射到您的模型/顶点 ID
  4. 读回帧缓冲区并扫描您之前使用的颜色,映射回您的模型/顶点 ID。

不是很快,但应该可以。