Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl glBindBufferRange与变换反馈的使用_Opengl_Geometry Shader_Transform Feedback - Fatal编程技术网

Opengl glBindBufferRange与变换反馈的使用

Opengl glBindBufferRange与变换反馈的使用,opengl,geometry-shader,transform-feedback,Opengl,Geometry Shader,Transform Feedback,我有一个缓冲区,我想填补连续变换反馈,我想知道如何确切地做到这一点 glBindBufferRange有五个参数,我知道前三个参数相当于glBindBufferBase的参数,但我对offset和size参数有几个问题 如果我的第一个变换反馈产生了n原语,如从GL\u transform\u feedback\u primitives\u writed检索的,我的原语是点,我想从缓冲区中的那个位置继续,那么glBindBufferRange的偏移量是否应该设置为n*4*sizeof(GLfloa

我有一个缓冲区,我想填补连续变换反馈,我想知道如何确切地做到这一点

glBindBufferRange
有五个参数,我知道前三个参数相当于
glBindBufferBase
的参数,但我对
offset
size
参数有几个问题

如果我的第一个变换反馈产生了
n
原语,如从
GL\u transform\u feedback\u primitives\u writed
检索的,我的原语是点,我想从缓冲区中的那个位置继续,那么
glBindBufferRange
的偏移量是否应该设置为
n*4*sizeof(GLfloat)
?(假设我正在检索vec4几何体着色器输出)


文档只是说,
offset
size
应该是基本的机器单位(虽然它们有两种不同的类型,GLintptr和GLsizeiptr),但我不确定这是什么意思,所以我假设字节,这是正确的吗?

是的,在变换反馈期间写入缓冲区的数据量是写入的原语数量*这些原语的组件数量*原语的大小。是的,“基本机器单元”是“字节”的标准名称。

是的,对不起,有点不清楚。这些是完全独立的变换反馈。我真的想知道如何计算第二次反馈的缓冲区中从何处开始写入内容,即使用的偏移量,这样我就不会在缓冲区中留下空白或覆盖我已经写入的内容。@leohutson:看我的最后一句话。非常感谢你的帮助,我想我现在已经很好地理解了。如果你不介意的话,我想问一个有点无关紧要的问题。在我当前的代码中,在我的初始转换反馈之后,我有一个while循环作为屏障,只是“暂停”程序,直到GL_transform_feedback_PRIMITIVES_writed查询可用。如果我要摆脱这个问题,自己计算原语的预期数量,那么绑定缓冲区、重新绑定缓冲区并立即执行第二次反馈是安全的,还是存在并发性问题?