我试图找出选择使用着色器呈现的信息的最佳方法。窗口管理器缓冲区(窗口)用于输出渲染。在用户事件中,我应该选择渲染的几何图形。使用 gluPick 很容易,但我试图只使用着色器来选择。
着色器的灵活性并不能帮助我找到正确的解决方案。我找到了以下解决方案:
- 使用系统提供的缓冲区进行渲染(实际上是使用颜色)。使用 glScissor 限制特定区域的渲染,并使用 glReadPixels 获取颜色,映射几何标识符
- 使用单独的帧缓冲区对象进行渲染。需要定义渲染缓冲区格式。也许我可以使用普通整数来输入名字吗?
- 使用帧缓冲区对象进行渲染,用于渲染和拾取。一个包含渲染名称的附加渲染缓冲区对象。
似乎第二种解决方案是最好的,因为它不会改变窗口缓冲区,并且可以定义自定义方式来指定几何名称。
有什么建议吗?
PS:
由于在片段着色器中我声明了一个 vec4 数组来定义片段数据,我如何设置一个帧缓冲区来保存一个只有 R 组件的渲染缓冲区,并以大小整数内部格式存储?
是否可以将片段着色器输出变量与特定的附加渲染缓冲区链接?