glGetUniform повертає значення уніфікованої змінної

C-специфікація

void glGetUniformfv (GLuint program,
                     GLint location,
                     GLfloat *params) ;

void glGetUniformiv (GLuint program,
                     GLint location,
                     GLint *params) ;

 

Параметри

program вказує програмний об'єкт який необхідно опитати.

location вказує розміщення уніфікованої змінної, яку необхідно опитати.

params в даному параметрі розміщується повернене значення розміщене в уніфікованій змінній.

Опис

Функція glGetUniform повертає у параметрі params одне або декілька значень вказаної уніфікованої змінної. Тип уніфікованої змінної вказаної за допомогою параметру location визначає кількість повернених значень. Якщо уніфікована змінна визначена у шейдері в якості булевої змінної, змінної типу int або float буде повернене одне значення. Якщо вона визначена у якості vec2, ivec2 або bvec2, повертаються два значення. Якщо вона визначена у якості vec2, ivec3 або bvec3, будуть поверненими три значення, і т.д. Для опитування значень збережених у масивах уніфікованих змінних, використовується функція glGetUniform для кожного елементу масиву. Для опитування значень збережених в уніфікованих змінних оголошених у якості структур, викликається функція glGetUniform для кожного поля у структурі. Значення для уніфікованих змінних оголошених у якості матриць будуть повернені у порядку колонок головною розмірністю.

Розміщення надані уніфікованим змінним невідомі, поки програмний об'єкт не пройде процедуру компонування. Після компонування, команда glGetUniformLocation використовується для отримання розміщення уніфікованої змінної. Значення даного розміщення може передаватися до функції glGetUnifrom для опитування поточного значення уніфікованої змінної. Після того як програмний об'єкт був успішно скомпонованим, значення індексів для уніфікованих змінних залишається фіксованим до поки не виконається команда компонування. Значення уніфікованих змінних можуть опитуватися тільки після успішної процедури компонування.

Нотатки

Функція glGetUniform доступна в системах OpenGL версій 2.0 або вище.

Якщо генерується помилка, жодні зміни вносяться у вміст параметру params.

Помилки

GL_INVALID_VALUE генерується якщо параметр program не містить значення згенерованого системою OpenGL.

GL_INVALID_OPERATION генерується якщо program не являється програмним об'єктом.

GL_INVALID_OPERATION генерується якщо програма program не пройшла успішного компонування.

GL_INVALID_OPERATION генерується якщо параметр location не відповідає коректній уніфікованій змінній для вказаного програмного об'єкту.

GL_INVALID_OPERATION генерується якщо команда glGetUnifrom виконується між відповідними викликами glBegin і glEnd.

Пов'язані параметри

glGetActiveUniform з аргументом program і індексом активної уніфікованої змінної

glGetProgram з аргументами program і GL_ACTIVE_UNIFORMS або GL_ACTIVE_UNIFORM_MAX_LENGTH

glGetUniformLocation з аргументами program і ім`ям уніфікованої змінної

glIsProgram

Перегляньте також

glCreateProgram, glLinkProgram, glUniform

Оригінал

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetUniform.xml