Ich habe versucht, einen OpenGL-Code zu starten, es hatte GL_DEPTH_BUFFER_BIT in GlClear() gelöscht, aufgrund dessen konnte ich meine Szene nicht wiedergeben. Ich habe dieses Bit hinzugefügt und die Szene wurde gerendert. Warum ist es notwendig, dieses klare Bit zu verwenden?Warum müssen wir den Tiefenpuffer in OpenGL während des Renderings löschen?
Ich kenne vielleicht den Grund dafür, die Tiefe Puffer-Werte von GPU zuvor gelöscht, aber ich möchte nur bestätigen.
Sie könnten auch den Tiefenbereich und die Richtung der Tiefenprüfung jeden Frame wechseln. Aber es stellt sich heraus, dass das Löschen des Tiefenpuffers auch eine Leistungsoptimierung auf moderner Hardware ist - sie implementieren eine verlustfreie Z-Puffer- (und Farbpuffer-) Komprimierung durch Aufteilen des Framebuffers in Kacheln, wenn die GPU nur einige Bits pro Lesen/Schreiben benötigt -tile beim Abrufen von Werten für Bereiche des Bildschirms, in denen nichts enthalten ist. Der alte Hack, den die Leute benutzten, um den Farbpuffer und den Tiefenpuffer zu löschen, schadet eigentlich der Leistung moderner GPUs;) –
Genau das, was ich dachte, ist der Grund :) Perfect ans. – 2am