glScissor: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Kategorisierung verbessert)
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glScissor =
 
= glScissor =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glScissor''' - Definiert die Scissor-Box. (scissor stammt aus dem Lateinischem und bedeutet ''Vorschneider'')
 
'''glScissor''' - Definiert die Scissor-Box. (scissor stammt aus dem Lateinischem und bedeutet ''Vorschneider'')
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glScissor'''(''x'' : glInt; ''y'' : glInt; ''width'' : glSizei; ''height'' : glSizei);
 
  procedure '''glScissor'''(''x'' : glInt; ''y'' : glInt; ''width'' : glSizei; ''height'' : glSizei);
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
<table border=1 rules=all>
+
{| border="1" rules="all"
<tr>
+
! ''x,y''
<td>'''x,y'''</td>
+
|Gibt die untere/linke Ecke der Scissorbox an. Standard ist 0/0.
<td>Gibt die untere/linke Ecke der Scissorbox an. Standard ist 0/0.</td>
+
|-
</tr>
+
!''width,height''
<tr>
+
| Gibt Höhe und Breite der Scissorbox an. Wenn ein GL-Kontext zum ersten Mal an ein Fenster gebunden wird, werden diese Werte auf die Dimensionen des GL-Kontextes gesetzt.
<td>'''width,height'''</td>
+
|}
<td>Gibt Höhe und Breite der Scissorbox an. Wenn ein GL-Kontext zum ersten Mal an ein Fenster gebunden wird, werden diese Werte auf die Dimensionen des GL-Kontextes gesetzt</td>
+
 
</tr>
+
 
</table>
 
  
<br>
 
 
== Beschreibung ==
 
== Beschreibung ==
'''glScissor''' beschreibt ein Rechteck (die Scissorbox genannt) in Fensterkoordinaten. Die beiden ersten Argumente (x und y) geben die untere/linke Ecke der Box and; width und height beschreiben die Dimensionen der Box.
+
'''glScissor''' beschreibt ein Rechteck (die Scissorbox genannt) in Fensterkoordinaten. Die beiden ersten Argumente (''x'' und ''y'') geben die untere/linke Ecke der Box and; ''width'' und ''height'' beschreiben die Dimensionen der Box.
  
Um den Scissortest zu aktivieren bzw. zu deaktivieren, ruft man [[glEnable]] bzw. [[glDisable]] mit dem Argument GL_SCISSOR_TEST auf. Der Test ist in der Grundeinstellung deaktiviert.
+
Um den Scissortest zu aktivieren bzw. zu deaktivieren, ruft man [[glEnable]] bzw. [[glDisable]] mit dem Argument '''GL_SCISSOR_TEST''' auf. Der Test ist in der '''Grundeinstellung deaktiviert'''.
Sobald der Test aktiviert ist, können nur Pixel die innerhalb der Scissorbox liegen von Zeichenkommandos modifiziert werden. Fensterkoordinaten besitzen an den geteilten Rändern von Pixeln. '''glScissor'''(0,0,1,1) z.B. lässt nur modifizieren des Pixels der ganz unten links liegt zu, während '''glScissor'''(0,0,0,0) überhaupt keine Pixelmodifkationen zulässt.
+
Sobald der Test aktiviert ist, können nur Pixel, die innerhalb der Scissorbox liegen, von Zeichenkommandos modifiziert werden. Fensterkoordinaten sind Ganzzahlen und bezeichnen die Kante, welche 2 Framebufferpixel trennt. '''glScissor'''(0,0,1,1) z.B. lässt nur die Modifikation des Pixels, welches ganz unten links liegt, zu, während '''glScissor'''(0,0,0,0) überhaupt keine Pixelmodifkationen zulässt.
  
 
Sobald der Scissortest deaktiviert wird, verhält es sich so als würde die Scissorbox den kompletten Viewport beschreiben.
 
Sobald der Scissortest deaktiviert wird, verhält es sich so als würde die Scissorbox den kompletten Viewport beschreiben.
  
<br>
+
 
 +
 
 +
== Hinweise ==
 +
Am leichtesten fällt die Verwendung von '''glScissor''' im Orthogonalmodus ([[glOrtho]]), da hier die Positionsbestimmung leichter fällt, vorallem wenn die Auflösung des Orthogonalmodus pixelgenau ist.
 +
 
 +
Will man anstelle einer simplen Box eine kompliziertere Form als Schablone verwenden, können dazu die Methoden des Stenciltests (z.B. [[glStencilFunc]]) verwendet werden.
 +
 
 +
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
'''GL_INVALID_VALUE''' wird generiert wenn Höhe oder Breite negativ sind.<br>
+
'''GL_INVALID_VALUE''' wird generiert, wenn Höhe oder Breite negativ sind.
 +
 
 +
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glScissor''' zwischen einem [[glBegin]] und dem dazugehörigem [[glEnd]] aufgerufen wird.
 +
 
  
'''GL_INVALID_OPERATION''' wird generiert wenn '''glScissor''' zwischen einem [[glBegin]] und dem dazugehörigem [[glEnd]] aufgerufen wird.
 
  
<br>
 
 
== Zugehörige Wertrückgaben ==  
 
== Zugehörige Wertrückgaben ==  
[[glGet]] mit dem Argument '''GL_SCISSOR_BOX'''.
+
[[glGet]] mit dem Argument '''[[glGet#GL_SCISSOR_BOX|GL_SCISSOR_BOX]]'''
[[glIsEnabled]] mit dem Argument '''GL_SCISSOR_TEST'''.
+
 
 +
[[glIsEnabled]] mit dem Argument '''GL_SCISSOR_TEST'''
 +
 
 +
 
  
<br>
 
 
== Siehe auch ==
 
== Siehe auch ==
 
[[glEnable]], [[glViewport]]
 
[[glEnable]], [[glViewport]]
  
 
[[Kategorie:GL|Scissor]]
 
[[Kategorie:GL|Scissor]]
 +
[[Kategorie:GL1.0|Scissor]]

Aktuelle Version vom 13. Juli 2011, 00:51 Uhr

glScissor

Name

glScissor - Definiert die Scissor-Box. (scissor stammt aus dem Lateinischem und bedeutet Vorschneider)


Delphi-Spezifikation

procedure glScissor(x : glInt; y : glInt; width : glSizei; height : glSizei);


Parameter

x,y Gibt die untere/linke Ecke der Scissorbox an. Standard ist 0/0.
width,height Gibt Höhe und Breite der Scissorbox an. Wenn ein GL-Kontext zum ersten Mal an ein Fenster gebunden wird, werden diese Werte auf die Dimensionen des GL-Kontextes gesetzt.


Beschreibung

glScissor beschreibt ein Rechteck (die Scissorbox genannt) in Fensterkoordinaten. Die beiden ersten Argumente (x und y) geben die untere/linke Ecke der Box and; width und height beschreiben die Dimensionen der Box.

Um den Scissortest zu aktivieren bzw. zu deaktivieren, ruft man glEnable bzw. glDisable mit dem Argument GL_SCISSOR_TEST auf. Der Test ist in der Grundeinstellung deaktiviert. Sobald der Test aktiviert ist, können nur Pixel, die innerhalb der Scissorbox liegen, von Zeichenkommandos modifiziert werden. Fensterkoordinaten sind Ganzzahlen und bezeichnen die Kante, welche 2 Framebufferpixel trennt. glScissor(0,0,1,1) z.B. lässt nur die Modifikation des Pixels, welches ganz unten links liegt, zu, während glScissor(0,0,0,0) überhaupt keine Pixelmodifkationen zulässt.

Sobald der Scissortest deaktiviert wird, verhält es sich so als würde die Scissorbox den kompletten Viewport beschreiben.


Hinweise

Am leichtesten fällt die Verwendung von glScissor im Orthogonalmodus (glOrtho), da hier die Positionsbestimmung leichter fällt, vorallem wenn die Auflösung des Orthogonalmodus pixelgenau ist.

Will man anstelle einer simplen Box eine kompliziertere Form als Schablone verwenden, können dazu die Methoden des Stenciltests (z.B. glStencilFunc) verwendet werden.


Fehlermeldungen

GL_INVALID_VALUE wird generiert, wenn Höhe oder Breite negativ sind.

GL_INVALID_OPERATION wird generiert, wenn glScissor zwischen einem glBegin und dem dazugehörigem glEnd aufgerufen wird.


Zugehörige Wertrückgaben

glGet mit dem Argument GL_SCISSOR_BOX

glIsEnabled mit dem Argument GL_SCISSOR_TEST


Siehe auch

glEnable, glViewport