Existem alguns aspectos para esse problema. Em primeiro lugar, como você está desenhando seus 10000 blocos? Você está realmente desenhando-os como 10000 objetos separados? Nesse caso, é quase certamente o gargalo da garrafa, não a falta de seleção da oclusão. Você deve agrupar esses blocos em um número menor de malhas (talvez alguns milhares por malha) para reduzir as chamadas de empate.
Quanto à sua pergunta real, existem três tipos de seleção de oclusão que vêm à mente.
1) Blocos fora do campo de visão. Isso significa blocos que estão atrás de você ou dois do lado. O Ogre já os remove pela seleção de frustum de exibição.
2) Blocos 'subterrâneos' ou completamente cercados por outros blocos para que nunca possam ser vistos de nenhum ângulo. Você pode identificá-los olhando os blocos vizinhos de tamanho considerável. Se todos eles são sólidos, seu bloco está oculto. A GPU nunca deve ouvir sobre esses blocos - eles devem ser ignorados quando você estiver construindo a malha que representa sua superfície.
3) Blocos que estão na superfície e podem ser vistos em algumas posições do nível, mas que atualmente estão ocultos por uma colina (ou algo assim). Esse é o caso mais complicado que ainda não resolvi, mas há uma boa chance de que as consultas de oclusão de hardware possam ser usadas para esse caso.
É um plug vergonhoso, mas eu tenho uma biblioteca bastante madura que várias pessoas estão usando para desenvolver clones do Minecraft, incluindo alguns usando o Ogre. Você define o conteúdo do volume e ele gera a malha de superfície que pode ser renderizada. Aqui está a página inicial:
http://www.thermite3d.org/
E aqui está um vídeo do projeto de outra pessoa que está usando:
http://www.youtube.com/watch?v=Jju6WRPEK7o