我试图将一些OpenGL概念抽象为面向对象的样式,将Buffers,Arrays,Vertices等元素包装到保存其访问ID,数据类型,缓冲区大小,使用的索引等的对象中。建议进一步简化其使用。
虽然现在我提到过:有没有人真的想重新获得曾经被推入GPU的数据?像glGetBufferSubData这样的函数实际上是用于调试以外的,因为官方维基上的这些函数的文档不是很精细,我从未在任何教程中看到它。
答案 0 :(得分:3)
GL是可以查询所有内容的一般概念。回读你自己放的东西应该避免,并且通常比保留本地副本更昂贵。但是,还有一些由GPU生成的数据,您可能会回读这些数据。这样的例子当然是frambeuffer内容,你渲染的纹理,或者你通过变换反馈存储到缓冲区中的顶点数据。所以是的,有glGetBufferSubData()
之类的实际用例(尽管在大多数情况下我更喜欢缓冲区映射)。
如果你需要对此类操作的支持完全是另一回事,我认为其中一个主题是主题,主要是基于意见的。在没有预期用例的情况下构建的那些抽象的问题在于,人们倾向于过度抽象事物。 YMMV。
答案 1 :(得分:0)
我编写了一个使用变换反馈生成网格的程序,需要读取缓冲区中的数据以保存生成的网格。 转换反馈生成数据。我最初不是把那些数据推送到那里。 所以,是的。