【问题标题】:Identify visible vertices in OpenGL识别 OpenGL 中的可见顶点
【发布时间】:2010-11-01 21:58:19
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

  • gluProject 会是您正在寻找的吗?将对象坐标映射到窗口坐标?
  • 您的目标是哪个 OpenGL 版本?始终包含此信息。另外,您需要知道哪些顶点通过了测试,还是只需要计数?
  • 我的目标是 OpenGL 3.1 核心配置文件。提供的答案就是我所需要的,谢谢。

标签: opengl visibility vertex vertices occlusion


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

不是很快,但应该可以。

【讨论】:

  • 太棒了,这是一个很好的技巧,效果很好。在这种情况下,速度并不是很重要。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 2015-07-19
相关资源
最近更新 更多