Dieses Problem hat einige Aspekte. Erstens, wie zeichnest du deine 10000 Blöcke? Zeichnen Sie sie tatsächlich als 10000 separates Objekt? Wenn ja, ist dies mit ziemlicher Sicherheit Ihr Flaschenhals, nicht die fehlende Okklusionsentfernung. Sie sollten diese Blöcke in eine kleinere Anzahl von Maschen gruppieren (möglicherweise einige Tausend pro Masche), um Draw Calls zu reduzieren.
Was Ihre eigentliche Frage betrifft, so gibt es drei Arten von Okklusions-Culling, die in den Sinn kommen.
1) Blöcke außerhalb des Sichtstumpfes. Dies bedeutet Blöcke, die sich hinter Ihnen oder zwei an der Seite befinden. Ogre entfernt diese bereits über das View-Frustum-Culling.
2) Blöcke, die unterirdisch oder vollständig von anderen Blöcken umgeben sind, so dass sie aus keinem Winkel gesehen werden können. Sie können diese identifizieren, indem Sie sich die benachbarten Blöcke ansehen. Wenn sie alle fest sind, ist dein Block verborgen. Die GPU sollte nie etwas von diesen Blöcken hören - sie sollten übersprungen werden, wenn Sie das Netz erstellen, das Ihre Oberfläche darstellt.
3) Blöcke, die sich auf der Oberfläche befinden und von einigen Positionen im Level aus zu sehen sind, die derzeit jedoch von einem Hügel (oder etwas anderem) verborgen werden. Dies ist der schwierigste Fall, den ich selbst nicht angesprochen habe, aber es besteht eine gute Chance, dass für diesen Fall Hardware-Okklusionsabfragen verwendet werden können.
Es ist ein schamloser Plug, aber ich habe eine ziemlich ausgereifte Bibliothek, mit der mehrere Leute Minecraft-Klone entwickeln, darunter auch einige mit Ogre. Sie definieren den Inhalt des Volumens und es generiert das Oberflächennetz, das Sie dann rendern können. Hier ist die Homepage:
http://www.thermite3d.org/
Und hier ist ein Video von einem anderen Projekt, das es verwendet:
http://www.youtube.com/watch?v=Jju6WRPEK7o