Hola, me gustaria ke alguien me pasara o me dijera de kw web podria conseguir algun codigo sobre la utiolizacion de octrees, o algun otro algoritmo de visibilidad que utilice Direct3D.
Gracias.
En mi web hay un ejemplo y un articullo para Delphi + DX. Pero no te recomiendo el metodo q uso para dibujar octrees ya q esta pensado para tarjetas 3D viejas como la mia.
Yo utilizo octrees. Este es el código. El VertexBuffer no lo cambio nunca, sólo cambio en IndexBuffer. Pero atención, que el octree que yo hago es por malla, no por "mundo".
// Las caras a false
memset(m_CarasUtilizadas,0,(m_NIndicesOriginal/3)*sizeof(bool));
m_Octree.MarcarCarasVisibles(m_CarasUtilizadas,m_VerticesOriginal,j->m_Matriz);
WORD *pi=(WORD *)m_BuffersShaders.IB->Bloquear();
e=0;
for(c=0;c<(m_NIndicesOriginal/3);c++)
if(m_CarasUtilizadas[c]) {
d=c*3;
pi[0]=(WORD)m_IndicesOriginal[d];
pi[1]=(WORD)m_IndicesOriginal[d+1];
pi[2]=(WORD)m_IndicesOriginal[d+2];
e+=3;
pi+=3;
}
m_NIndices=e;
m_BuffersShaders.IB->Desbloquear();
no entiendo tu codigo XD casi mejor azlo en pseudo plz
Marcar Caras Visibles
Rellenar los indices con las caras que se ven
Muchas gracias. Lord Trancvos voy a echarle una ojeada a tu codigo.
Haddd, gracias por responder, pero en realidad lo que necesito en el trozo de codigo que usas para renderizar las caras del octree, ya que el buffer de indices ya lo tengo bien montado.
Entonces mi codigo no te servira pq yo no uso IndexBuffers :)
para renderizar un terreno mediante octrees, lo suyo seria tener 1 vertex buffer para todo el terreno, y en cada nodo final 1 lista de indices, para añadirlos al inndex bufer que se crea a cada frame, nop ?
Sip, todo eso ya lo tenog hecho y funioncando bien en opengl. Lo que pasa es ke no me alcaro a hacerlo en direct3d, por eso kiero ver algun codugo de al menos cuando se va a renderizar.