gluPickMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (GluPickMatrix wurde nach gluPickMatrix verschoben)
K (Bot: konvertiere/korrigiere <BR>)
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
 
= gluPickMatrix=
 
= gluPickMatrix=
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''gluPickMatrix''' - Legt eine Bereich fürs [[Picking]] fest.
 
'''gluPickMatrix''' - Legt eine Bereich fürs [[Picking]] fest.
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''gluPickMatrix'''(''x, y, width, height'' : glDouble; ''viewport'' : TVector4i);
 
  procedure '''gluPickMatrix'''(''x, y, width, height'' : glDouble; ''viewport'' : TVector4i);
  
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 24: Zeile 27:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
 
'''gluPickMatrix''' erstellt eine [[Projektionsmatrix]], die genutzt werden kann, um das Zeichnen auf einen kleinen Bereich des [[Viewport|Viewports]] zu beschränken. Das ist üblicherweise dann von Nutzen wenn man ermitteln will welche Objekte untern/in der Nähe des Cursors gerendert wurden. '''gluPickMatrix''' nutzt man dabei um das Zeichnen auf eine kleine Region rund um den Cursor zu beschränken, um dann mittels des Selektionsmodus die unter dem Cursor liegenden Objekte zu ermitteln.
 
'''gluPickMatrix''' erstellt eine [[Projektionsmatrix]], die genutzt werden kann, um das Zeichnen auf einen kleinen Bereich des [[Viewport|Viewports]] zu beschränken. Das ist üblicherweise dann von Nutzen wenn man ermitteln will welche Objekte untern/in der Nähe des Cursors gerendert wurden. '''gluPickMatrix''' nutzt man dabei um das Zeichnen auf eine kleine Region rund um den Cursor zu beschränken, um dann mittels des Selektionsmodus die unter dem Cursor liegenden Objekte zu ermitteln.
  
Die von '''gluPickMatrix''' generierte Matrix wird mit der aktuellen Matrix multipliziert, so als würde man [[glMultMatrix]] mit der generierten Matrix aufrufen. Um die generierte Matrix effektiv nutzen zu können sollte man vorher über [[glLoadIdentity]] die Identitätsmatrix auf den Perspektivmatrizen-Stack bringen. Dann ruft man '''gluPickMatrix''' auf und dann einen Befehl (z.B. [[gluPerspective]]) um die Perspektivenmatrix mit der Pickingmatrix zu multiplizieren.
+
Die von '''gluPickMatrix''' generierte Matrix wird mit der aktuellen Matrix multipliziert, so als würde man [[glMultMatrix]] mit der generierten Matrix aufrufen. Um die generierte Matrix effektiv nutzen zu können sollte man vorher über [[glLoadIdentity]] die Identitätsmatrix auf den Perspektivmatrizen-[[Stack]] bringen. Dann ruft man '''gluPickMatrix''' auf und dann einen Befehl (z.B. [[gluPerspective]]) um die Perspektivenmatrix mit der Pickingmatrix zu multiplizieren.
  
 
Wenn '''gluPickMatrix''' genutzt wird um [[NURBS]] zu wählen sollte man die NURBS-Eigenschaft '''GLU_AUTO_LOAD_MATRIX''' deaktivieren, denn sonst werden die NURBS-Oberflächen unter Nutzung der Pickingmatrix anders unterteilt als bei Nutzung einer normalen Projektionsmatrix.
 
Wenn '''gluPickMatrix''' genutzt wird um [[NURBS]] zu wählen sollte man die NURBS-Eigenschaft '''GLU_AUTO_LOAD_MATRIX''' deaktivieren, denn sonst werden die NURBS-Oberflächen unter Nutzung der Pickingmatrix anders unterteilt als bei Nutzung einer normalen Projektionsmatrix.

Aktuelle Version vom 22. April 2006, 19:26 Uhr

gluPickMatrix

Name

gluPickMatrix - Legt eine Bereich fürs Picking fest.


Delphi-Spezifikation

procedure gluPickMatrix(x, y, width, height : glDouble; viewport : TVector4i);



Parameter

x,y Geben das Zentrum der Pickingregion in Fensterkoordinaten an.
width, height Breite und Höhe der Pickingregion in Fensterkoordinaten.
viewport Gibt den aktuellen Viewport an, der über glGetIntegerv ermittelt werden kann.



Beschreibung

gluPickMatrix erstellt eine Projektionsmatrix, die genutzt werden kann, um das Zeichnen auf einen kleinen Bereich des Viewports zu beschränken. Das ist üblicherweise dann von Nutzen wenn man ermitteln will welche Objekte untern/in der Nähe des Cursors gerendert wurden. gluPickMatrix nutzt man dabei um das Zeichnen auf eine kleine Region rund um den Cursor zu beschränken, um dann mittels des Selektionsmodus die unter dem Cursor liegenden Objekte zu ermitteln.

Die von gluPickMatrix generierte Matrix wird mit der aktuellen Matrix multipliziert, so als würde man glMultMatrix mit der generierten Matrix aufrufen. Um die generierte Matrix effektiv nutzen zu können sollte man vorher über glLoadIdentity die Identitätsmatrix auf den Perspektivmatrizen-Stack bringen. Dann ruft man gluPickMatrix auf und dann einen Befehl (z.B. gluPerspective) um die Perspektivenmatrix mit der Pickingmatrix zu multiplizieren.

Wenn gluPickMatrix genutzt wird um NURBS zu wählen sollte man die NURBS-Eigenschaft GLU_AUTO_LOAD_MATRIX deaktivieren, denn sonst werden die NURBS-Oberflächen unter Nutzung der Pickingmatrix anders unterteilt als bei Nutzung einer normalen Projektionsmatrix.

Hinweise

Wenn gluPickMatrix genutzt wird um NURBS zu selektieren, sollte darauf geachtet werden die NURBS-Eigenschaft (gluNurbsProperty) GLU_AUTO_LOAD_MATRIX zu deaktivieren. Wenn GLU_AUTO_LOAD_MATRIX nicht deaktiviert wird, werden die NURBS-Oberflächen anders unterteilt (siehe Tesselierung) als ohne die Pickingmatrix.

Beispiel

Wenn eine Szene mit diesem Code gerendert wird:

glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
ZEICHNE_SZENE;

Dann kann auf diese Weise ein Teil der Szene zur Picking-Region gemacht werden:

glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPickMatrix(x, y, width, height, viewport);
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
ZEICHNE_SZENE;

Siehe auch

glGet, glLoadIdentity, glMultMatrix, glRenderMode, gluPerspective