- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于我们使用的是 OpenGL 4.5 或支持 GL_ARB_direct_state_access
扩展,我们有新功能 glCreateBuffers
.
此函数与 glGenBuffers
具有相同的签名。 ,但指定:
returns
n
previously unused buffer names inbuffers
, each representing a new buffer object initialized as if it had been bound to an unspecified target
glGenBuffers
具有以下规范:
Buffer object names returned by a call to
glGenBuffers
are not returned by subsequent calls, unless they are first deleted withglDeleteBuffers
.
glCreateBuffers
返回的任何缓冲区名称永远不会再单独使用,但可以被
glGenBuffers
使用.
glCreateBuffers
总是会创建新的缓冲区对象并返回它们的名字,
glGenBuffers
只有在没有以前的缓冲区被删除的情况下才会创建新的缓冲区。
glCreateBuffers
超过
glGenBuffers
?
glCreate*
GL_ARB_direct_state_access
添加的功能
最佳答案
您在这里注意到的基本上是整理 API 以确保与着色器和程序对象创建的一致性。这些总是在一次调用中生成和初始化,并且是 API 中唯一以这种方式工作的部分。所有其他对象首先使用 glGen* (...)
保留。然后通过将保留名称绑定(bind)到目标来初始化。
事实上,在 GL 3.0 之前,允许跳过 glGen* (...)
完全通过在某处绑定(bind)一个唯一的数字来创建一个对象。
在 GL 4.5 中,每种类型的对象都被赋予了 glCreate* (...)
在 GL 4.5 中的一次调用中生成和初始化它们的函数。这种方法非常适合直接状态访问,其中修改(在这种情况下创建)对象不需要更改(并可能恢复)绑定(bind)状态。
许多对象需要以这种方式使用 API 时的目标(例如纹理),但缓冲区对象对于所有意图和目的都是无类型的。这就是 API 签名相同的原因。当您使用此接口(interface)创建缓冲区对象时,它“被初始化,就好像它已绑定(bind)到未指定的目标一样”。对于 GL 中的大多数类型的对象,这完全是一派胡言。他们需要一个目标来正确初始化它们。
这里的主要考虑因素是,您可能希望在 GL 中为对象创建和设置状态,而不影响期望绑定(bind)到某个目标的对象保持不变的其他一些代码。这就是创建 Direct State Access 的目的,这也是这些功能存在的主要原因。
理论上,正如 dari 指出的那样,通过将缓冲区对象绑定(bind)到特定目标来初始化缓冲区对象可能会为驱动程序提供有关其预期用途的提示。不过,我不会在这方面投入太多,这与 glBufferData (...)
时的实际使用标志一样不确定。叫做;充其量是一个提示。
关于opengl - glGenBuffers 和 glCreateBuffers 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841494/
所以我是 OpenGL 新手,我一直在关注一些关于如何绘制简单三角形的教程。我在这里不使用着色器,尽管我知道如何使用它们。教程说使用 glCreateBuffers 创建缓冲区,但我在代码中更改的所有
我正在尝试运行 OpenGL Red book examples .我能够在 MS VS 2017 中编译项目。但是,当我执行一些示例时,它会抛出以下异常。 Exception thrown at 0
鉴于我们使用的是 OpenGL 4.5 或支持 GL_ARB_direct_state_access扩展,我们有新功能 glCreateBuffers . 此函数与 glGenBuffers 具有相同
当我使用 opengl 3.3 时,glGenBuffers() 和 glBufferData() 等函数工作得很好,但现在我使用的是 4.3,我想使用这些函数的更新版本,例如 glCreateBuf
我是一名优秀的程序员,十分优秀!