glGetUniformLocation - повертає розміщення уніфікованої змінної.

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

GLint glGetUniformLocation (GLuint program,
                            const GLchar *name) ;

 

Параметри

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

name параметр вказує на рядок символів з завершуючим нульовим символом, який містить ім'я уніфікованої змінної, чиє розміщення необхідно опитати.

Опис

Функція glGetUniformLocation повертає ціле число, яке представляє розміщення вказаної уніфікованої змінної у програмному об'єкті. Параметр name повинен містити рядок з завершуючим нульовим символом і без пробілів. Параметр name повинен містити ім'я активної уніфікованої змінної у програмі program, яка не являється структурою, масив структур або компонент вектору чи матриці. Дана функція повертає значення -1, якщо параметр name не відповідає активній уніфікованій змінній у програмі program або якщо параметр name починається з зарезервованого префіксу "gl_".

Уніфіковані змінні, які являються структурами або масивами структур можуть опитуванися за допомогою функції glGetUniformLocation для кожного поля у структурі. Оператор елементу масиву "[]" і оператор доступу до поля структури "." можуть використовуватися у параметрі name для обирання елементів з масиву або полів структури. Не дозволяється, щоб результатом виконання даних операторів поверталась структура, масив структур, або компонент вектора чи матриці. За винятком випадків коли остання частина параметру name вказує на масив уніфікованих змінних, розміщення першого елементу масиву можна отримати за допомогою використання ім'я масиву, або використовуючи оператор доступу до елементу масиву з індексом нуля "[0]".

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

Нотатки

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

Помилки

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

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

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

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

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

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

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

glGetUniform з аргументами program і ім'ям уніфікованої змінної.

glIsProgram

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

glLinkProgram, glUniform

Оригінал

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