glAttachShader — シェーダーオブジェクトをプログラムオブジェクトにアタッチします
void glAttachShader(
|
GLuint program, |
GLuint shader) ; |
program
シェーダーオブジェクトをアタッチするプログラムオブジェクトを指定します。
shader
アタッチするシェーダーオブジェクトを指定します。
完全なシェーダープログラムを作成するには、リンクする対象を指定する必要があります。
プログラムオブジェクトはこのメカニズムを提供します。
プログラムオブジェクトにリンクされるシェーダーは、まずそのプログラムオブジェクトにアタッチする必要があります。
glAttachShader
は、 shader
で指定されたシェーダーオブジェクトを、 program
で指定されたプログラムオブジェクトにアタッチします。
これは、 program
のリンク操作に shader
が含まれることを示しています。
シェーダーオブジェクトで実行できるすべての操作は、シェーダーオブジェクトがプログラムオブジェクトにアタッチされているかどうかに関係なく有効です。 ソースコードがシェーダーオブジェクトに読み込まれる前、またはシェーダーオブジェクトがコンパイルされる前に、シェーダーオブジェクトをプログラムオブジェクトにアタッチできます。 完全なシェーダーとなる一部分がそれぞれのシェーダーオブジェクトに含まれている可能性があるため、同じタイプの複数のシェーダーオブジェクトをアタッチできます。 シェーダーオブジェクトを複数のプログラムオブジェクトにアタッチすることもできます。 シェーダーオブジェクトがプログラムオブジェクトにアタッチされている間に削除された場合は、削除のフラグが付けられ、 アタッチされているすべてのプログラムオブジェクトからアタッチが解除されるために glDetachShader が呼び出されるまで、削除は行われません。
GL_INVALID_VALUE
is generated if either
program
or shader
is not a value generated by OpenGL.
GL_INVALID_OPERATION
is generated if
program
is not a program object.
GL_INVALID_OPERATION
is generated if
shader
is not a shader object.
GL_INVALID_OPERATION
is generated if
shader
is already attached to
program
.
glGetAttachedShaders with the handle of a valid program object
OpenGL Version | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5 |
glAttachShader
|
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
glCompileShader, glCreateShader, glDeleteShader, glDetachShader, glLinkProgram, glShaderSource
Copyright © 2003-2005 3Dlabs Inc. Ltd. Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.