发送指向函数的数组

时间:2013-06-26 14:20:54

标签: c arrays pointers opengl-es

我在我的文件顶部声明了一个指针数组。

GLuint *buffers[2];

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

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

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

我试过了:

glGenBuffers(2, *buffers);

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

这个例子不是我实际使用它的方式,我打算编写一个基于请求的Geometry加载器,它将生成所有缓冲区并将mallocs分成更大的缓冲区,以减少调用和加速性能

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

编辑:我现在意识到我的请求似乎有多荒谬,我只是希望c可能有一个功能,说这些是指针所以编辑他们的价值观,仔细考虑这个似乎很荒谬。我可能只是分配一个缓冲区数组,而不是生成我的原始指针(在单独的类文件中),通过执​​行以下内容来等于这个值:* originalBuffer [i] = generatedBuffer [i];在循环中。

1 个答案:

答案 0 :(得分: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。