0

我有一个像这样在文件顶部声明的指针数组。

GLuint *buffers[2];

我希望将数组的实际值传递给 gl 函数以生成缓冲区:

GL_API void GL_APIENTRY glGenBuffers(GLsizei n, GLuint *buffers);

这是 API 条目。我无法更改功能,Khronos/Apple(通过扩展)可以。

我试过了:

glGenBuffers(2, *buffers);

没有运气。我不知道这是否可能,我假设不是,但如果有机会,它会让我的程序更容易编写。

这个例子不是我实际使用它的方式,我打算编写一个基于请求的几何加载器,它将生成所有缓冲区并将 malloc 拆分为更大的缓冲区,以减少调用并提高性能。

编辑:如果这是人们的建议,我无法更改 glGenBuffers 函数。

编辑:我现在意识到我的请求似乎是多么荒谬,我只是希望也许 c 有一个功能说这些是指针,所以编辑它们的值,在详细考虑这一点后,这似乎很可笑。我可能只是分配一个缓冲区数组,而不是使我的原始指针(在单独的类文件中)等于这个值: *originalBuffer[i] = generatedBuffer[i]; 在一个循环中。

4

1 回答 1

0

鉴于 API 条目(从您的评论复制到问题中)和您的变量声明,您不能将指针数组传递给函数。

你可以写:

GLuint buffer[2];

glGenBuffers(2, buffer);

你可以写:

GLuint *buffers[2];
buffers[0] = malloc(number * sizeof(GLuint));
buffers[1] = malloc(number * sizeof(GLuint));
glGenBuffers(number, buffers[0]);
glGenBuffers(number, buffers[1]);

这些中的任何一个都尊重 API。

于 2013-06-26T14:44:56.667 回答