Istnieje kilka aspektów tego problemu. Po pierwsze, jak rysujesz swoje 10000 bloków? Czy rysujesz je jako 10000 oddzielnych obiektów? Jeśli tak, to prawie na pewno twoja szyjka butelki, a nie brak wybijania okluzji. Powinieneś pogrupować te bloki w mniejszą liczbę oczek (być może kilka tysięcy na siatkę), aby zmniejszyć liczbę wywołań rysunkowych.
Jeśli chodzi o twoje aktualne pytanie, istnieją trzy rodzaje eliminacji okluzji, które przychodzą na myśl.
1) Bloki poza widokiem frustum. Oznacza to bloki, które są za tobą lub dwie z boku. Ogre już je usuwa poprzez ubijanie widoku frustum.
2) Bloki, które są „pod ziemią” lub całkowicie otoczone innymi blokami, dzięki czemu nie można ich zobaczyć pod żadnym kątem. Możesz je zidentyfikować, patrząc na sąsiednie bloki siz. Jeśli wszystkie są solidne, blok jest ukryty. GPU nigdy nie powinna nawet słyszeć o tych blokach - należy je pominąć, gdy budujesz siatkę reprezentującą twoją powierzchnię.
3) Bloki znajdujące się na powierzchni i widoczne z niektórych pozycji na poziomie, ale obecnie ukryte przez wzgórze (lub coś w tym rodzaju). Jest to najtrudniejszy przypadek, do którego sam się nie odniosłem, ale istnieje duża szansa, że w tym przypadku można zastosować zapytania dotyczące okluzji sprzętu.
Jest to bezwstydna wtyczka, ale mam dość dojrzałą bibliotekę, z której korzysta kilka osób do tworzenia klonów Minecraft, w tym niektóre wykorzystujące Ogre. Definiujesz zawartość objętości, która generuje siatkę powierzchni, którą możesz następnie renderować. Oto strona główna:
http://www.thermite3d.org/
A oto film przedstawiający projekt, który go używa:
http://www.youtube.com/watch?v=Jju6WRPEK7o