我在我的文件顶部声明了一个指针数组。
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];在循环中。答案 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。