2010-11-01 35 views
5

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

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

最初我以为在顶点法线和摄像机视角矢量之间执行点积来确定顶点是否面向摄像机,但是如果模型被另一个物体遮挡,则此测试不起作用。

预先感谢

+0

gluProject会是你要找的?将对象坐标映射到窗口坐标? – Jim 2010-11-01 22:04:11

+0

你的目标是哪一个OpenGL版本?始终包含这些信息。另外,你是否需要知道哪些顶点通过了测试,还是只需要计数? – 2010-11-01 23:09:13

+0

我针对OpenGL 3.1核心配置文件。所提供的答案是我所需要的,谢谢。 – tat0 2010-11-02 17:26:16

回答

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

不是很快,但它应该工作。

+0

太棒了,这是一个很好的技巧,并且工作正常。在这种情况下速度不是很重要。谢谢你的帮助。 – tat0 2010-11-02 17:22:59