In OpenGL können Sie nur rückwärts gerichtete Polygone zeichnen, nur Polygone auf der Vorderseite oder beides. Wenn Sie ein Mehrfachdreiecknetz rendern, löschen Sie den Rahmenpuffer, nicht aber den Tiefenpuffer, und rendern Sie dann nur die nach hinten gerichteten Polygone. Was erwarten Sie zu sehen?Rückseitige Polygone in opengl
Ich denke, die folgende Antwort, die mir gegeben ist falsch:
Sie sollten die Rückseite nach Dreiecke sehen. Der erste Render-Durchlauf wird ergeben, wobei der Tiefenpuffer die Tiefenwerte der Dreiecke aufweist, die gegenüberliegen. Der zweite Render-Durchlauf Sie Rendern die Rückseite Dreiecke, also diejenigen, die die größten Tiefenwert haben. Jedes Dreieck , das gerastert ist, hat seine Tiefe Wert im Vergleich zur aktuellen Tiefe Wert für dieses Pixel. Da die Tiefe Puffer für alle am nächsten Tiefe Werte (kleine Werte) gesetzt ist, aber ist auf der hintersten Tiefe Scheidungs Werte (hohe Werte) der Rücken Dreiecke mit Blick auf gerendert wird.“
Aber ich denke, die Antwort ist:
werfen.Da der Tiefenpuffer nicht gelöscht wird, und immer noch die Tiefenwerte der vorderen enthält Dreiecke zugewandt ist, wäre es die Rückseite gerichteten Dreiecke, und nichts angezeigt
Welche Antwort ist richtig?
Wenn Ihr Objekt ein einseitiges Netz ist (dh Sie stellen nur ein Dreieck für jeweils drei Eckpunkte zur Verfügung und sie werden nur einmal mit einer einzigen Normalen dargestellt), werden die nach hinten zeigenden Dreiecke so wiedergegeben, wie Sie es sagen Objekt ist keine Mannigfaltigkeit (es wird einen Punkt geben müssen, an dem die Normalen "kippen". Wenn Sie es doppelseitig rendern, dann gibt es an jedem Pixel ein nach vorne und nach hinten gerichtetes Dreieck mit der gleichen Tiefe und die Rückseiten werden nur im zweiten Durchgang gerendert, wenn die Tiefenfunktionen GL_LEQUAL, GL_EQUAL, GL_GEQUAL oder GL_ALWAYS sind. –