У меня есть массив указателей, объявленных в верхней части моего файла следующим образом.Отправка массива указателей на функцию
GLuint *buffers[2];
И я хочу, чтобы передать фактические значения массива в функцию г л для создания буферов:
GL_API void GL_APIENTRY glGenBuffers(GLsizei n, GLuint *buffers);
Это запись API. Я не могу изменить функцию, Khronos/Apple (по расширению) может.
Я пробовал:
glGenBuffers(2, *buffers);
не повезло. Я не знаю, возможно ли это, и я предполагаю, что это не так, но если есть шанс, это сделает мою программу намного легче написать.
Этот пример не так, как я его использую, я планирую написать загрузчик геометрии, основанный на запросах, который будет генерировать все буферы и разбивать mallocs на более крупные, чтобы уменьшить количество звонков и скорость производительность.
EDIT: Я не могу изменить функцию glGenBuffers, если это то, что люди предлагают.
EDIT: Я понимаю, насколько смешной мой запрос кажется, я просто надеялся, что, возможно, у была функция, которая говорит, что это указатели, поэтому отредактируйте их ценности, подумав об этом подробно, это кажется смехотворным. Вероятно, я просто выделил массив буферов, чем мои исходные указатели (в отдельном файле класса), равное этому значению, перейдя: * originalBuffer [i] = сгенерированныйBuffer [i]; В петле.
Вы пытались вызвать 'glGenBuffers (2, buffers)' и объявлять 'void glGenBuffers (int, GLuint **)'? Включили ли вы все предупреждения и отладочную информацию в своем компиляторе? Вы использовали отладчик? –
Да, для первого, как перезаписывать декларацию фактической функции что-нибудь изменит? Да для отладки, я использую LLDB. – user22817
Но прототип функции неизвестен ... В соответствии с данным кодом я предполагаю, что это 'void' /' int' glGenBuffers (int, GLuint *). Это так? – yulian