glfw: ф-ция glGetUniformLocation и передача в неё строки, генерируемой в цикле

Я делаю систему освещения в игре, и мне нужно заполнить массив в шейдере данными из динамической памяти. Я пытаюсь сделать это в цикле, вызывая glGetUniformLocation и подменивая в строке индекс переменной i:

for (int i = 0; i < scene->lightcount; i++) { glUniform1f(glGetUniformLocation(shader->Program, "plightArr[") + to_string(i) + "].linear", scene->lights[i]->linear); }

Пока пробую передать туда только одну переменную, но компилятор ругается уже сейчас, что:

E0413 не существует подходящей функции преобразования из "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" в "const GLchar *"

В итоге вытекает вопрос: как можно в функцию glGetUniformLocation передать строку, генерируемую циклом вот таким образом? Если передавать просто строку в кавычках, то работает всё нормально, но это не вариант заполнять таким образом множество элементов массива


Ответы (1 шт):

Автор решения: Borutist

Как обычно: рассказал кому-то свои проблемы и тут же придумал решение. Если кому-то надо, то надо было преобразовать строку к стилю C через .c_str();

glUniform1f(glGetUniformLocation(shader->Program, ("plightArr[" + to_string(i) + "].linear").c_str()), scene->lights[i]->linear);
→ Ссылка