У меня есть форма в шейдере, как это:передачи данных из станд :: вектора к равномерному массиву в GLSL
uniform vec3 origins[10];
и зЬй :: вектор в моем коде, как это:
std::vector<glm::vec3> origins;
, который заполнен десятью элементами glm::vec3
.
Кто-нибудь знает, как передать это шейдеру? Я подумал:
GLint originsLoc = glGetUniformLocation(programID, "origins");
glUniform3fv(originsLoc, 10, origins.data());
будет делать это, но он не скомпилируется. Ошибка говорит, что есть no matching function for call to 'glUniform3fv'
. Как передать данные в std::vector
способом, который удовлетворяет функции glUniform3fv
?
«Это не работает» ... авария? Ничего не сделано? Что-то неожиданное нарисовано? – genpfault
Это не скомпилируется. Следует ли компилировать код? Ошибка говорит, что '' не соответствует функции для вызова 'glUniform3fv''. Я отредактировал вопрос с этой информацией. – acrmuui
Вам нужно будет указать указатель на 'const GLfloat *'. Без трансляции подпись функции не совпадает. Вы также должны включить вывод ** full * compiler. Я предполагаю, что фактическая ошибка включает в себя дополнительную информацию о типе/подписи, которую вы опустили, к сожалению. – Cornstalks