glAttachShader: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Delphi-Spezifikation)
(Zusammenfassung dieses Artikels und glAttachObject)
Zeile 1: Zeile 1:
= glAttachShader =
+
= glAttachShader (glAttachObjectARB) =
  
 
<br>
 
<br>
Zeile 20: Zeile 20:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Um eine ausführbare Datei zu erzeugen, muss man die Liste der Dinge angeben, die verlinkt werden sollen. Programmobjekte bieten einen Methode dafür. Shader, die in einem Programmobjekt verlinkt werden sollen, müssen erst an dieses Programmobjekt gebunden werden. '''glAttachShader''' bindet das Shaderobjekt - angegeben durch ''shader'' - an das Programmobjekt, das mit ''program'' angegeben wurde. Das bedeuted, dass dieser Shader gelinkt wird, sobald das Programm gelinkt wird.
+
Shaderobjekte lassen sich an ein Programmobjekte binden um so einen Shader zu erhalten der aus mehren Modulen besteht. '''glAttachShader''' bindet das Shaderobjekt - angegeben durch ''shader'' - an das Programmobjekt, das mit ''program'' angegeben wurde. Das bedeuted, dass dieser Shader gelinkt wird, sobald das Programm gelinkt wird.
  
  
Alle Operationen, die auf ein Shaderobjekt angewendet werden können, sind zulässig, egal, ob das Shaderobjekt an ein Programmobjekt gebunden wurde. Es ist zulässig, ein Shaderobjekt an ein Programmobjekt zu binden, bevor der Sourcecode ins Shaderobjekt geladen wurde oder bevor das Shaderobjekt kompiliert wurde. Es ist auch zulässig, mehrere Shaderobjekte des selben Typs anzubinden, die sie einen Teil des ganzen Shaders beinhalten könnten. Es ist weiter möglich, ein Shaderobjekt an mehr als ein Programmobjekt zu binden. Wenn ein Shaderobjekt gelöscht wird, während es an ein Programmobjekt gebunden ist, wird es als zu löschend markiert und das Löschen wird nicht durchgeführt, bis [[glDetachShader]] aufgerufen wird, um das Shaderobjekt von allen Programmobjekten zu lösen, an die es angebunden ist.
+
Alle Operationen, die auf ein Shaderobjekt angewendet werden können, sind zulässig, egal, ob das Shaderobjekt an ein Programmobjekt gebunden wurde. Es ist zulässig, ein Shaderobjekt an ein Programmobjekt zu binden, bevor der Sourcecode ins Shaderobjekt geladen wurde oder bevor das Shaderobjekt kompiliert wurde. Es ist auch zulässig, mehrere Shaderobjekte des selben Typs anzubinden, die einen Teil des ganzen Shaders beinhalten könnten. Es ist weiter möglich, ein Shaderobjekt an mehr als ein Programmobjekt zu binden. Wenn ein Shaderobjekt gelöscht wird, während es an ein Programmobjekt gebunden ist, wird es als zu löschend markiert und das Löschen wird nicht durchgeführt, bis [[glDetachShader]] aufgerufen wird, um das Shaderobjekt von allen Programmobjekten zu lösen, an die es angebunden ist.
 +
 
  
 
== Hinweise ==
 
== Hinweise ==
'''glAttachShader''' ist erst ab OpenGL Version 2.0 verfügbar.
+
'''glAttachShader''' ist erst ab OpenGL Version 2.0 verfügbar.  
 
+
Da vor gab es eine ARB Version der Funktion mit dem Namen '''glAttachObjectARB'''.
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
Zeile 39: Zeile 41:
 
'''GL_INVALID_OPERATION''' wird generiert wenn '''glAttachShader''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
 
'''GL_INVALID_OPERATION''' wird generiert wenn '''glAttachShader''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
  
<br>
 
  
 
== Zugehörige Wertrückgaben ==
 
== Zugehörige Wertrückgaben ==
Zeile 48: Zeile 49:
 
[[glIsShader]]
 
[[glIsShader]]
  
<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==
 
[[glCompileShader]], [[glDetachShader]], [[glLinkProgram]], [[glShaderSource]]
 
[[glCompileShader]], [[glDetachShader]], [[glLinkProgram]], [[glShaderSource]]
 +
 +
 +
'''Hintergrundwissen :''' [[Shader]]
 +
  
 
[[Kategorie:GL|AttachShader]]
 
[[Kategorie:GL|AttachShader]]
 +
[[Kategorie:SHADER_OBJECTS|AttachShader]]

Version vom 15. April 2006, 15:04 Uhr

glAttachShader (glAttachObjectARB)


Name

glAttachShader - Hängt ein Shaderobjekt an ein Programmobjekt.


Delphi-Spezifikation

procedure glAttachShader(program : GLuint; shader : GLuint);
procedure glAttachObjectARB(programObj, shaderObj : GLhandleARB);

Parameter

program Bestimmt das Programmobjekt an welches das Shaderobjekt gebunden werden soll.
shader Bestimmt das zu bindende Shaderobjekt.



Beschreibung

Shaderobjekte lassen sich an ein Programmobjekte binden um so einen Shader zu erhalten der aus mehren Modulen besteht. glAttachShader bindet das Shaderobjekt - angegeben durch shader - an das Programmobjekt, das mit program angegeben wurde. Das bedeuted, dass dieser Shader gelinkt wird, sobald das Programm gelinkt wird.


Alle Operationen, die auf ein Shaderobjekt angewendet werden können, sind zulässig, egal, ob das Shaderobjekt an ein Programmobjekt gebunden wurde. Es ist zulässig, ein Shaderobjekt an ein Programmobjekt zu binden, bevor der Sourcecode ins Shaderobjekt geladen wurde oder bevor das Shaderobjekt kompiliert wurde. Es ist auch zulässig, mehrere Shaderobjekte des selben Typs anzubinden, die einen Teil des ganzen Shaders beinhalten könnten. Es ist weiter möglich, ein Shaderobjekt an mehr als ein Programmobjekt zu binden. Wenn ein Shaderobjekt gelöscht wird, während es an ein Programmobjekt gebunden ist, wird es als zu löschend markiert und das Löschen wird nicht durchgeführt, bis glDetachShader aufgerufen wird, um das Shaderobjekt von allen Programmobjekten zu lösen, an die es angebunden ist.


Hinweise

glAttachShader ist erst ab OpenGL Version 2.0 verfügbar. Da vor gab es eine ARB Version der Funktion mit dem Namen glAttachObjectARB.

Fehlermeldungen

GL_INVALID_VALUE wird generiert wenn shader oder program keine von OpenGL gernerierten Werte enthält.
GL_INVALID_OPERATION wird generiert wenn program nicht vom Typ GL_PROGRAM_OBJECT ist.
GL_INVALID_OPERATION wird generiert wenn shader nicht vom Typ GL_SHADER_OBJECT ist.
GL_INVALID_OPERATION wird generiert wenn shader bereits an program gebunden ist.
GL_INVALID_OPERATION wird generiert wenn glAttachShader innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGetAttachedShaders mit dem Handle auf ein gültiges Programmobjekt.

glIsProgram

glIsShader


Siehe auch

glCompileShader, glDetachShader, glLinkProgram, glShaderSource


Hintergrundwissen : Shader