glAttachShader - прикріплює об'єкт шейдера до об'єкта програми.

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

void glAttachShader (GLuint program,
 	             GLuint shader) ;

Параметри

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

shader - вказує на об'єкт шейдера, який повинен бути прикріпленим.

Опис

Для того щоб створити виконуваний файл, повинен існувати шлях для вказування списку сутностей, які будуть об'єднуватись. Програмні об'єкти надають таку можливість. Шейдери які будудь скомпонованими (linked) разом у програмний об'єкт повинні спочатку приєднюватись (attach) до даного програмного об'єкта. Функція glAttachShader приєднює шейдерний об'єкт вказаний за ідентифікатором у значенні параметру shader до програмного об'єкта вказаного у параметрі program. Це вказує на те, що параметр shader буде включений у операціях зв'язування які будуть виконані над програмою program.

Усі операції які можуть бути виконаними над шейдерномим об'єктом є доступними незалежно від того, чи даний шейдер є прикріплений до програми чи ні. Доступно також поєднання шейдерного об'єкта до програмного об'єкта перед тим, як вихідний джерельний код шейдера був завантажений у шейдерний об'єкт або перед тим, як шейдерний об'єкт був скомпільований. Дозволено також приєднювати множину шейдерних об'єктів одного типу, оскільки кожен може містити порцію одного шейдера. Також дозволено приєднювати шейдерний об'єкт до більш ніж одного програмного об'єкта. Якщо шейдерний об'єкт видалений поки він приєднаний до об'єкта програми, він буде помічений на видалення, і видалення відбудеться під час виклику функції glDetachShader для його від'єднання від об'єкта програми до якого він під'єднаний.

Нотатки

glAttachShader доступний тільки для OpenGL версії 2.0 або вище.

Помилки

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

GL_INVALID_OPERATION генерується якщо значення параметру program не являється ідентифікатором (ім'ям) програми.

GL_INVALID_OPERATION генерується, якщо значення параметру shader не являється об'єктом шейдера.

GL_INVALID_OPERATION генерується якщо шейдер shader вже приєднаний до програми program.

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

Пов'язані виклики

glGetAttachedShaders з валідним ідентифікатором програмного об'єкта.

glIsProgram

glIsShader

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

glCompileShader, glDetachShader, glLinkProgram, glShaderSource

Оригінал

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