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/.