gpt4 book ai didi

opengl - glGen* 与 glCreate* 命名约定

转载 作者:行者123 更新时间:2023-12-04 16:27:16 25 4
gpt4 key购买 nike

我浏览了 OpenGL 标准,寻找对此的解释......为什么某些对象(着色器对象)使用以前缀 开头的函数glCreate 并且某些对象(缓冲区对象)使用以前缀 开头的函数glGen ?这有语义原因吗?

最佳答案

glGen…函数回到 OpenGL-1.1 ( glGenTextures ) 并用于创建对象名称,而无需实际初始化对象。然而,大多数情况下,这些函数一次仅用于创建一个对象名称。因此,大多数情况下,您可以只返回一个整数,而不是将指针传递给缓冲区和缓冲区的大小。

当 3Dlabs 引入 GLSL 时,他们试图打破旧的 glGen…使 OpenGL API 现代化的约定。

是的,这有点无关紧要,坦率地说,我更喜欢 GLSL API 使用 glGen…命名约定。但我们被困在 glCreateShaderglCreateProgram就是这样。

如果你想有一个单一的命名约定,你可以编写以下包装器:

GLuint glCreateTexture(void) { GLuint name; glGenTextures(1, &name); return name; }
GLuint glCreateBuffer(void) { GLuint name; glGenTextures(1, &name); return name; }
...

关于opengl - glGen* 与 glCreate* 命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441430/

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