opengl - 识别 OpenGL 中的可见顶点

标签 opengl visibility vertex vertices occlusion

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

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

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

提前致谢

最佳答案

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

不是很快,但应该可以。

关于opengl - 识别 OpenGL 中的可见顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073442/

相关文章:

asp.net - 如何使用 jquery 使不可见的控件可见? (隐藏和显示不起作用)

C++ - 更改成员值时调用函数

opengl - glBufferData 如何知道要处理哪个 VBO?

opengl - GLSL 编辑器程序

math - 纹理投影+透视校正,数学正确

c# - 尝试在长时间运行的操作期间在 WPF 中显示 "please wait"消息

java - 检测 View 是否添加到布局中

OpenGL索引缓冲区对象元素顺序绘制不正确

graph - 节点和顶点有什么区别?

c - 位图字体渲染问题