2010-11-01 9 views
5

Was ist der effizienteste Weg, um die Scheitelpunkte zu identifizieren, die von einem bestimmten Blickpunkt aus sichtbar sind?Identifizieren sichtbaren Scheitelpunkte in OpenGL

Ich habe eine Szene aus mehreren 3D-Modellen. Ich möchte jedem Eckpunkt einen Bezeichner hinzufügen (ModelID, VertexID), dann 2D-Bilder aus verschiedenen Blickwinkeln generieren und für jedes Bild eine Liste der sichtbaren Vertices-Identifikatoren generieren (im Wesentlichen für eine Bildverarbeitungsanwendung).

Zuerst dachte ich, ein Punktprodukt zwischen einer Vertexnormalen und dem Kameraansichtsvektor durchzuführen, um herauszufinden, ob der Scheitelpunkt der Kamera zugewandt ist oder nicht, aber wenn das Modell durch ein anderes Objekt verdeckt wird, würde dieser Test nicht funktionieren.

Vielen Dank im Voraus

+0

Wäre gluProject das, wonach Sie suchen? Objektkoordinaten auf Fensterkoordinaten abbilden? – Jim

+0

Auf welche OpenGL-Version zielen Sie? Fügen Sie diese Informationen immer ein. Außerdem müssen Sie wissen, welche Scheitelpunkte den Test bestehen, oder brauchen Sie nur die Anzahl? –

+0

Ich bin auf OpenGL 3.1 Core-Profil ausgerichtet. Die Antwort ist alles, was ich brauche, danke. – tat0

Antwort

3
  1. All deaktivieren Beleuchtung/Texturierung
  2. Render Ihre Geometrie (GL_TRIANGLES) Z-Puffer
  3. Render Ihre Geometrie wieder (GL_POINTS), Auswählen eine andere RGB-Farbe für jeden aufzufüllen Vertex, der auf Ihre Modell-/Vertex-IDs zuordnet
  4. Lesen Sie den Framebuffer zurück, und suchen Sie nach den Farben, die Sie zuvor verwendet haben, und ordnen Sie diese den Modell-/Vertex-IDs zu.

Nicht sehr schnell, aber es sollte funktionieren.

+0

Großartig, das ist ein guter Trick und funktioniert gut. Geschwindigkeit ist in diesem Fall nicht sehr wichtig. Danke für Ihre Hilfe. – tat0