gpt4 book ai didi

opengl - 仅使用存储在 GPU 内存中的 'count' 参数调用 glDrawArray

转载 作者:行者123 更新时间:2023-12-01 19:35:02 25 4
gpt4 key购买 nike

我在绘制调用 #1 期间在片段着色器中生成缓冲区(作为 SSBO 访问)。然后我想使用该缓冲区(作为 VBO 访问)作为绘制调用 #2 的输入。

问题是,使用函数 void glDrawArrays(GLenum mode, GLint first, GLsizei count),我应该知道 CPU 上的 count 值。但是在 CPU 上我不知道那个值。该值仅作为原子计数器存储存储在 GPU 内存中。

有什么方法可以使用存储在 GPU 内存中的值作为 count 参数进行绘制调用?

我知道我可以从 GPU 中检索值,然后在 CPU 中使用它,但是由于同步,这会减慢程序的速度。

最佳答案

对于这种情况,glDrawArraysIndirect可以与 GL_INDIRECT_DRAW_BUFFER 结合使用。

您可以使用已经存在的 SSBO 作为间接绘制缓冲区,但您必须确保遵循 DrawArraysIndirectCommand 结构并确保计数存储在 SSBO 的前四个字节中。所有其他数据都可以设置一次,不必通过 SSBO 访问。

typedef  struct {
GLuint count;
GLuint instanceCount;
GLuint first;
GLuint baseInstance;
} DrawArraysIndirectCommand;

关于opengl - 仅使用存储在 GPU 内存中的 'count' 参数调用 glDrawArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55087294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com