为什么OpenGL方法不返回任何内容?

hLk*_*hLk 1 c++ opengl

这只是出于好奇。我忍不住注意到,尽管某些方法似乎更典型地通过返回来实现,但OpenGL方法均未返回任何内容。

例如,glGenBuffers有两个参数,要生成的缓冲区数和要存储它们的变量。但是,我认为大多数人会将其编码为仅采用一个参数的方法,即缓冲区数想要创建并返回这些缓冲区。这是出于速度原因吗?还是其他古老的原因?

And*_*man 5

在C语言中,不引入动态内存分配就很难返回任何东西的数组。

因此,要从中“返回”多个名称glGenBuffers (...),最简单的解决方案是将指针传递给数组,并使API调用将生成的名称存储在预分配的数组中。

  • 不仅如此,它还是为了便携性。如果它返回动态分配内存的数组,则会增加对 C 标准库的依赖,并且还需要用户释放该内存。通过从不返回 GL 实现动态分配的内存,可以完全避免这些问题。 (2认同)