【发布时间】:2017-10-23 16:40:50
【问题描述】:
我正在尝试使用transform feedback 实现拣货程序。目前它工作正常,但问题是速度非常低(比GL_SELECT 慢)。
现在如何运作:
- 使用带有偏移量的
glBindBufferRange()绑定TBO(开头为0)。 - 使用
glBufferSubData()重置内存(TF 变化结构的大小)(以确保选择正确)。主要问题在这里。 - 使用几何着色器绘制对象,该着色器检查与拾取射线的交点。如果找到交集,着色器将其写入 TF 变化(最初它没有交集,请参见步骤 2)。
- 增加偏移量并使用下一个对象转到第 1 步。
所以,最后我有一个为每个对象挑选数据的数组。
问题是如何避免在每次迭代中调用glBufferSubData()?可能的解决方案(但我不知道如何实施)是:
- 只写一个 TF 变量。所以不需要重置其他的
- 用任何其他方式重置数据
有什么想法吗?
【问题讨论】:
-
我已经有一段时间没有使用openGL了,但是你不能一次性处理所有对象并让几何过滤器写出所有相交图元的ID吗?然后,您必须找到一种将基元与它们所属的对象相关联的方法,但这应该是可能的。
标签: c++ opengl picking transform-feedback