c++ - 如何在 OpenGL 中为屏幕上的给定像素找到对应的图元或顶点

标签 c++ opengl

假设使用 OpenGL 计算并绘制了一个球体,例如完成 here例如。

我有兴趣学习,如何找到对应于屏幕上任意给定像素 (x,y) 的特定顶点?

我已经阅读了有关光线转换和选择缓冲区的内容,但是,由于我需要遍历大量像素(假设 >10k)并找到所有相应的顶点,这些解决方案似乎并不合适对于这种东西。

理想情况下,我想找到一种现代 OpenGL 意义上的既快速又现代的方式

是否有“开箱即用”的解决方案,或者我是否需要编写一个着色器?无论哪种情况,如果您能提供任何详细信息,我们将不胜感激!

最佳答案

  1. 添加一个整数“face ID”顶点属性,使给定三角形的每个顶点都相同
  2. 将人脸ID通过VS传递给FS并写入一个整数FBO
  3. 读回所需位置的 FBO 像素(使用 PBO 进行异步 FBO 读回),给出每个点的面部 ID

关于c++ - 如何在 OpenGL 中为屏幕上的给定像素找到对应的图元或顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35151949/

相关文章:

performance - 使用实例化渲染时,opengl 出现奇怪的减速

c++ - 已在 .obj 中定义 - 没有双重包含

c++ - OpenCV/Tesseract:如何用 GDI+ 位图替换 libpng、libtiff 等(通过 GDI+ 加载到 cv::Mat)

c++ - 将数学函数作为方法的输入参数传递给C++

c++ - 阴影贴图上的高斯模糊(FBO/纹理)

java - 处理后台消费者/生产者任务的设计或模式

math - 两个 4x4 矩阵相减 - 这可能吗?

Linux 中的 C++ : In what forked-task context should a timer callback execute?

c++ - 将 QVariant 中的枚举转换为整数

无法使纹理透明