gpt4 book ai didi

opengl - 为什么要绑定(bind) OpenGL 缓冲区对象?

转载 作者:行者123 更新时间:2023-12-02 13:14:28 25 4
gpt4 key购买 nike

在 OpenGL 中,一个通用的过程是绑定(bind)一个命名的缓冲区对象(或顶点数组对象、帧缓冲区……),对当前绑定(bind)的对象调用一些操作,然后绑定(bind)某种“默认”对象:

glBindBufferObject(GL_ARRAY_BUFFER, bufferObjectName)
glBufferData(GL_ARRAY_BUFFER, data, GL_STATIC_DRAW)
glBindBufferObject(GL_ARRAY_BUFFER, 0)

(Kotlin 中的 LWJGL)

我刚刚发现许多功能都有“命名”版本。上面的例子会变成这样
glNamedBufferData(bufferObjectName, data, GL_STATIC_DRAW)

这更适合面向对象的上下文。

那么为什么要使用第一个示例中的内容呢?我遇到的每个教程都使用第一种方法,那么在“命名”方法中是否存在一些性能损失或类似的缺点?

最佳答案

命名函数是 ARB_direct_state_access 的一部分OpenGL 4.5 中引入的扩展。在此之前,只有正常的方法存在。

使用旧版本的主要原因是针对 OpenGL 4.5 之前的硬件。大多数教程也是针对旧版本的 OpenGL 编写的。

关于opengl - 为什么要绑定(bind) OpenGL 缓冲区对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867132/

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