glCreateShader: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(ARB entfernt, gehört seit GL2.0 zum Kern)
K (Siehe auch)
 
(11 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= glCreateShaderObject (glCreateShaderObjectARB) =
+
= glCreateShader (glCreateShaderObjectARB) =
 +
 
 +
 
  
<br>
 
 
== Name ==
 
== Name ==
'''glCreateShaderObject''' - Erstellt ein [[Shader]]objekt
+
'''glCreateShader''' - Erstellt ein [[Shader]]objekt.
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  function '''glCreateShaderObject'''(''shaderType'' : GLenum) : GLhandle;
+
  function '''glCreateShader'''(''shaderType'' : GLenum) : GLuint;
 
  function '''glCreateShaderObjectARB'''(''shaderType'' : GLenum) : GLhandleARB;
 
  function '''glCreateShaderObjectARB'''(''shaderType'' : GLenum) : GLhandleARB;
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
  
Zeile 19: Zeile 22:
  
  
<br>
 
== Beschreibung ==
 
'''glCreateShaderObject''' erstellt ein leeres Shaderobjekt und gibt dessen Handle zurück. Ein Shaderobjekt wird genutzt um den Quellcode der einen Shader darstellt zu verwalten. ''shaderType'' gibt dabei ein welcher Shadertyp erstellt werden soll. Momentan werden zwei Shadertypen unterstützt : '''GL_VERTEX_SHADER''', ein Shader der auf dem programmierbaren Vertexprozessor läuft und die feste Funktionspipeline für die Vertexverarbeitung ersetzt. '''GL_FRAGMENT_SHADER''', ein Shader der auf dem programmierbaren Fragmentprozessor läuft und die feste Funktionspipeline für die Fragmentverarbeitung ersetzt.
 
  
Ein Shaderobjekt muss nicht zwingend den kompletten Quellcode für einen Shader beinhalten, sollte allerdings ein kompilierbares Modul des Shaders enthalten. Wenn erstellt, wird der '''GL_OBJECT_TYPE''-Parameter des Shaderobjektes auf '''GL_SHADER_OBJECT''' gesetzt, und sein '''GL_OBJECT_SUBTYPE'''-Parameter auf '''GL_VERTEX_SHADER''' bzw. '''GL_FRAGMENT_SHADER''', je nach gewähltem Shadertype.
+
== Beschreibung ==
 +
'''glCreateShader''' erstellt ein leeres Shaderobjekt und gibt dessen Handle zurück. Ein Shaderobjekt wird genutzt um den Quellcode der einen Shader darstellt zu verwalten. ''shaderType'' gibt dabei ein welcher Shadertyp erstellt werden soll. Momentan werden zwei Shadertypen unterstützt : '''GL_VERTEX_SHADER''', ein Shader der auf dem programmierbaren Vertexprozessor läuft und die feste Funktionspipeline für die Vertexverarbeitung ersetzt. '''GL_FRAGMENT_SHADER''', ein Shader der auf dem programmierbaren Fragmentprozessor läuft und die feste Funktionspipeline für die Fragmentverarbeitung ersetzt.
 +
 
 +
Ein Shaderobjekt muss nicht zwingend den kompletten Quellcode für einen Shader beinhalten, sollte allerdings ein kompilierbares Modul des Shaders enthalten. Wenn erstellt, wird der '''GL_OBJECT_TYPE'''-Parameter des Shaderobjektes auf '''GL_SHADER_OBJECT''' gesetzt, und sein '''GL_OBJECT_SUBTYPE'''-Parameter auf '''GL_VERTEX_SHADER''' bzw. '''GL_FRAGMENT_SHADER''', je nach gewähltem Shadertype.
 +
 
 +
 
  
<br>
 
 
== Hinweise ==
 
== Hinweise ==
 +
'''glCreateShader''' ist erst ab OpenGL Version 2.0 oder höher verfügbar.
 +
 
So wie [[Displaylisten]] und [[Texturenobjekte]] können Namensräume für alle Objekthandles über mehrere Renderkontexte geteilt werden, solange die Serverseiten des Kontexts den selben Adressraum besitzen. Wenn Handles über mehrere Renderkontexte verteilt werden, werden gleichzeitig auch die daran gebundenen Daten und angehangenen Objekte dort verfügbar.
 
So wie [[Displaylisten]] und [[Texturenobjekte]] können Namensräume für alle Objekthandles über mehrere Renderkontexte geteilt werden, solange die Serverseiten des Kontexts den selben Adressraum besitzen. Wenn Handles über mehrere Renderkontexte verteilt werden, werden gleichzeitig auch die daran gebundenen Daten und angehangenen Objekte dort verfügbar.
  
<br>
+
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
 
'''GL_INVALID_ENUM''' wird generiert, wenn ''shaderType'' kein gültiger Wert übergeben wird.
 
'''GL_INVALID_ENUM''' wird generiert, wenn ''shaderType'' kein gültiger Wert übergeben wird.
  
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glCreateShaderObject''' innerhalb eines [[glBegin]]-[[glEnd]] Blockes aufgerufen wird.
+
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glCreateShader''' innerhalb eines [[glBegin]]-[[glEnd]]-Blockes aufgerufen wird.
 +
 
 +
 
  
<br>
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
 
[[glGetInfoLog]] mit dem Handle eines gültigen Shaderobjektes.
 
[[glGetInfoLog]] mit dem Handle eines gültigen Shaderobjektes.
Zeile 43: Zeile 51:
 
[[glGetShaderSource]] mit dem Handle eines gültigen Shaderobjektes.
 
[[glGetShaderSource]] mit dem Handle eines gültigen Shaderobjektes.
  
<br>
+
 
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glAttachObject]], [[glCompileShader]], [[glCreateProgramObject]], [[glDeleteObject]], [[glDetachObject]], [[glShaderSource]]
+
[[glAttachShader]], [[glCompileShader]], [[glCreateProgram]], [[glDeleteShader]], [[glDeleteProgram]], [[glDetachShader]], [[glShaderSource]]
 +
 
 +
'''Hintergrundwissen :''' [[Shader]]
  
'''Hintergrundwissen :''' [[Shader]]<br>
 
 
[http://developer.3dlabs.com/openGL2/slapi/CreateShaderObjectARB.htm Englische Originalversion]  (Copyright 3DLabs Inc.)
 
[http://developer.3dlabs.com/openGL2/slapi/CreateShaderObjectARB.htm Englische Originalversion]  (Copyright 3DLabs Inc.)
  
[[Kategorie:GL|CreateShaderObject]]
+
[[Kategorie:GL|CreateShader]]
[[Kategorie:SHADER_OBJECTS|CreateShaderObject]]
+
[[Kategorie:GL2.0|CreateShader]]
 +
[[Kategorie:SHADER_OBJECTS|CreateShader]]
 +
[[Kategorie:GL3|CreateShader]]

Aktuelle Version vom 21. Februar 2014, 17:53 Uhr

glCreateShader (glCreateShaderObjectARB)

Name

glCreateShader - Erstellt ein Shaderobjekt.


Delphi-Spezifikation

function glCreateShader(shaderType : GLenum) : GLuint;
function glCreateShaderObjectARB(shaderType : GLenum) : GLhandleARB;


Parameter

shaderType Gibt den Typ des zu erstellenden Shaders an. Muss entweder GL_VERTEX_SHADER oder GL_FRAGMENT_SHADER sein.


Beschreibung

glCreateShader erstellt ein leeres Shaderobjekt und gibt dessen Handle zurück. Ein Shaderobjekt wird genutzt um den Quellcode der einen Shader darstellt zu verwalten. shaderType gibt dabei ein welcher Shadertyp erstellt werden soll. Momentan werden zwei Shadertypen unterstützt : GL_VERTEX_SHADER, ein Shader der auf dem programmierbaren Vertexprozessor läuft und die feste Funktionspipeline für die Vertexverarbeitung ersetzt. GL_FRAGMENT_SHADER, ein Shader der auf dem programmierbaren Fragmentprozessor läuft und die feste Funktionspipeline für die Fragmentverarbeitung ersetzt.

Ein Shaderobjekt muss nicht zwingend den kompletten Quellcode für einen Shader beinhalten, sollte allerdings ein kompilierbares Modul des Shaders enthalten. Wenn erstellt, wird der GL_OBJECT_TYPE-Parameter des Shaderobjektes auf GL_SHADER_OBJECT gesetzt, und sein GL_OBJECT_SUBTYPE-Parameter auf GL_VERTEX_SHADER bzw. GL_FRAGMENT_SHADER, je nach gewähltem Shadertype.


Hinweise

glCreateShader ist erst ab OpenGL Version 2.0 oder höher verfügbar.

So wie Displaylisten und Texturenobjekte können Namensräume für alle Objekthandles über mehrere Renderkontexte geteilt werden, solange die Serverseiten des Kontexts den selben Adressraum besitzen. Wenn Handles über mehrere Renderkontexte verteilt werden, werden gleichzeitig auch die daran gebundenen Daten und angehangenen Objekte dort verfügbar.


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn shaderType kein gültiger Wert übergeben wird.

GL_INVALID_OPERATION wird generiert, wenn glCreateShader innerhalb eines glBegin-glEnd-Blockes aufgerufen wird.


Zugehörige Wertrückgaben

glGetInfoLog mit dem Handle eines gültigen Shaderobjektes.

glGetObjectParameter mit dem Handle eines gültigen Shaderobjektes und dem Argument GL_OBJECT_TYPE oder GL_OBJECT_SUBTYPE.

glGetShaderSource mit dem Handle eines gültigen Shaderobjektes.


Siehe auch

glAttachShader, glCompileShader, glCreateProgram, glDeleteShader, glDeleteProgram, glDetachShader, glShaderSource

Hintergrundwissen : Shader

Englische Originalversion (Copyright 3DLabs Inc.)