Pergunta

Estou escrevendo um jogo no C ++ e tenho um nível que consiste em muitas malhas separadas, cada uma com seu próprio buffer de vértice. Estou usando o VMMLIB (Blibs Compat GL Free GL. Infelizmente, meu nível pode consistir em até 800 malhas e iterando em todos eles cada quadro é lento. Qual é a melhor maneira de otimizar o código para que eu não precise olhar para todas as malhas em todas as iterações? Volumes delimitadores dentro do frustum?

Foi útil?

Solução

Sim, objeto delimitado é o caminho a seguir, você deve tomar cuidado ao escolher um volume delimitado adequado, por exemplo, para malhas que se movem sobre a cena como bots e não se deitam um cilindro é o melhor volume, outros são melhor representados por cubos (eixo alinhado ou não).

Em seguida, você cria um quadtree ou octree para dividir hierarquicamente os dados da malha.

Isso funciona muito bem para abate ao ar livre ao ar livre.

Para dentro de casa, um BSP é o melhor caminho a percorrer, pois você tem muitas paredes para particionar seu espaço. Você ainda deve dar volume suas malhas com mais de 10 polígonos.

Outras dicas

Eu só queria acrescentar que os portais de dias geralmente são preferidos sobre ou em conjunto com os BSPs, mas não tenho reputação suficiente para editar a postagem original.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top