基于慢速变换反馈的拾取
Slow transform feedback-based picking?
我正在尝试使用转换反馈来实现拾取例程。目前它工作正常,但问题是速度很低(比GL_SELECT
慢)。
现在的工作原理:
- 使用偏移量为0的
glBindBufferRange()
绑定TBO - 使用
glBufferSubData()
重置内存(TF可变结构的大小)(以确保拾取正确)。主要问题就在这里 - 使用检查与拾取光线相交的几何体着色器绘制对象。如果找到了交集,着色器会将其写入TF变化(最初它没有交集,请参见步骤2)
- 增加偏移量,然后使用下一个对象转到步骤1
因此,在末尾,我有一个为每个对象拾取数据的数组。
问题是如何避免在每次迭代中调用glBufferSubData()
?可能的解决方案(但我不知道如何实现)是:
- 只写一个变化的TF。所以没有必要重置其他
- 用任何其他方式重置数据
有什么想法吗?
如果只想清除缓冲区的一个区域,请使用glClearBufferSubData
。话虽如此,但尚不清楚为什么需要清除它,而不仅仅是覆盖其中的内容。
仅供参考:拾取最好通过渲染场景、为对象指定不同的"颜色"以及读取感兴趣的像素来实现。你的方法是总是会更慢。
相关文章:
- OpenMP 慢速专用功能
- 慢速插入链接列表需要多线程
- 多个快速读取器 单个慢速写入器:使用具有原子索引的阴影数据安全吗?
- OPENGL慢速动画在2 Icosaedres上
- 使用用户模式和内核之间共享内存的慢速通信
- 基于慢速变换反馈的拾取
- 如何在QT Android应用程序中解决慢速滚动
- QgraphicsView慢速,大量QgraphicsPixMapiTem
- ID3D11DEVICECONTEXT :: MAP慢速性能
- C MFC慢速运行时使用2D向量
- 使用简单的过程进行慢速多线程处理
- 慢速 for 循环,时序不一致
- 增强精神气的慢速
- Visual Studio 2012慢速编译时间
- C ++,提升 ASIO,慢速阅读
- 中断 arduino 例程以运行基于延迟的慢速进程
- 具有大量并发客户端的慢速 QTcpServer
- C++中的慢速递归析构函数调用
- 启用 OpenMP 的慢速串行"for"
- Mex Cuda动态分配/慢速Mex代码