gpt4 book ai didi

c++ - OpenGL 何时完成函数中的指针?

转载 作者:可可西里 更新时间:2023-11-01 15:14:51 28 4
gpt4 key购买 nike

OpenGL 有 a number of functions那直接指点。其中一些read data from those pointers , 其他 write data to those pointers .

但是,OpenGL 函数通常不会立即执行。通常,当您画一些东西时,需要一段时间才能完成。

那么我怎么知道 OpenGL 何时完成了我给它的指针呢?

最佳答案

除了下面提到的异常(exception)情况,所有 OpenGL 函数都将使用您在该函数返回时提供的任何指针完成。所以 glReadPixels 在返回时将完成所有像素读取和格式转换。这就是为什么 asynchronous pixel transfer对于读取操作非常重要。它允许 OpenGL 这样做,不与 GPU 同步。

此规则的唯一异常(exception)是每个以“Pointer”一词结尾的函数。诸如 glVertexAttribPointerglTexCoordPointer 之类的东西。当您将客户端内存与这些函数一起使用时(在核心配置文件 OpenGL 3.2+ 中不再合法),这些函数会存储指向该内存的指针。因此,只要您打算使用这些顶点属性进行渲染,就必须确保此指针有效。

每次使用客户端内存进行渲染调用后,OpenGL 要求实现在渲染函数返回时完成从客户端内存中的读取。所以你可以调用 glDrawArrays,然后删除有问题的指针。只要在更改这些指针之前不进行另一个绘制调用,就可以了。这意味着 OpenGL 必须在渲染调用返回时复制出所有相关的顶点数据(这是使用缓冲区对象更快的原因之一)。

关于c++ - OpenGL 何时完成函数中的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15697861/

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