gpt4 book ai didi

opengl - 为什么第二次调用 glBindBuffer?

转载 作者:行者123 更新时间:2023-12-01 07:11:21 31 4
gpt4 key购买 nike

我正在阅读 this教程,我在如何使用顶点缓冲区接近尾声,我看到我生成并调用 glBindBuffer 的顶点缓冲区已经我必须第二次绑定(bind):

glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle);

我对 openGL 还是很陌生(比如 3 天),所以我试图围绕这些东西的工作原理来思考。我大部分时间都花在 khronos 或 opengl.org 上阅读命令,但我不明白为什么这个命令会被调用两次。任何提示?谢谢。

最佳答案

该特定示例是否严格需要第二次绑定(bind)?不会。OpenGL 会保留状态,因此如果缓冲区对象绑定(bind)到目标,那么它将保持绑定(bind)状态,直到您将其他内容绑定(bind)到该目标。

但是,如果您在创建创建第二个缓冲区的缓冲区之后插入代码会发生什么?毕竟,您可能想要两个对象。或者 10。或者你想要多少;他们不必共享缓冲区对象。

一旦你这样做了,你的代码就会中断,因为你的代码期望绑定(bind)的缓冲区实际上并没有绑定(bind)。因此,除非你擅长管理状态并且真的知道你在做什么(如果你还在学习教程,答案是“不”),你应该设置你需要的任何状态来做你想做的事情。

因此,如果您打算从特定缓冲区中绘制,您应该绑定(bind)它并设置适当的状态(gl*Pointer 调用)。

关于opengl - 为什么第二次调用 glBindBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599264/

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