gpt4 book ai didi

opengl-es - OpenGL ES 中的 'glBufferData' 是什么?

转载 作者:行者123 更新时间:2023-12-04 00:40:26 28 4
gpt4 key购买 nike

我遇到了一个移植到 OpenGL ES 2.0 的示例 OpenGL 代码(实际上没有太多工作要做),但我不禁想知道 glBufferData 是什么功能是为了。原始来源是这样的:

glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * 6, quad, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 2, (void *) 0);

但我可以成功地将其简化为:
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 2, quad);

也就是说,我可以省略 glBufferData只需使用指向 glVertexAttribPointer 中的四边形数组的有效指针即可实现函数.

那么,谁能解释一下 glBufferData 是什么?功能?从我正在做的事情来看,这似乎是多余的,但这一定是因为我严重缺乏 API 知识。事实上,我尝试在 khronos.org 阅读文档。但这并没有帮助我理解它的用途。

最佳答案

如果您在多个帧中重复使用相同的数据,请使用 glBufferData作为您的设置/初始化的一部分,只会将数据从 CPU 传输到 GPU 一次。而glVertexAttribPointer必须在每一帧都调用,因此使用它来传输数据会导致使用更多的总线带宽。

如果您每帧都更新属性数组,那么无论哪种方式都没有太大优势。

关于opengl-es - OpenGL ES 中的 'glBufferData' 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5402567/

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