Exibindo 100 Cubes flutuante usando DirectX OU OpenGL

votos
13

Eu gostaria de exibir 100 cubos flutuantes usando DirectXou OpenGL.

Eu estou olhando para qualquer um código fonte de amostra, ou uma descrição da técnica. Eu tenho problemas para obter mais um cubo para exibir corretamente.

Eu penteado na net para uma boa série de tutoriais e embora eles falam sobre como fazer 3Dprimitivas, o que eu não posso encontrar-se informações sobre como fazer um grande número de 3Dprimitivas - cubes, spheres, pyramidse assim por diante.

Publicado 04/08/2008 em 07:51
fonte usuário
Em outras línguas...                            


3 respostas

votos
7

Você diz que tem problemas suficientes a obtenção de um cubo para exibir ... então eu não tenho certeza se você tem um para exibir ou não.

Basicamente ... colocar o seu código para escrever um cubo em uma função, em seguida, basta chamar essa função 100 vezes.

void DrawCube()
{
    //code to draw the cube
}

void DisplayCubes()
{
    for(int i = 0; i < 10; ++i)
    {   
         for(int j = 0; j < 10; ++j)
         {
             glPushMatrix();
             //alter these values depending on the size of your cubes.
             //This call makes sure that your cubes aren't drawn overtop of each other
             glTranslatef(i*5.0, j*5.0, 0);
             DrawCube();
             glPopMatrix();
         }
    }              
}

Esse é o esquema básico de como você poderia ir sobre fazer isto. Se você quiser algo mais eficiente dar uma olhada em listas de exibição em algum momento uma vez que você tem o básico descobriu :)

Respondeu 04/08/2008 em 10:12
fonte usuário

votos
6

Sim, se você estava sendo eficiente, você jogaria tudo para o mesmo tampão vértice, mas eu não acho desenho 100 cubos vai empurrar qualquer GPU produzido nos últimos 5 anos, então você deve estar bem seguindo as sugestões acima.

Escrever um passe básica através shader de vértice, sombra no entanto você deseja no pixel shader. Ou passar em uma matriz mundo e fazer a tradução no shader de vértice, ou apenas calcular as posições espaço vértice mundo no lado do CPU (fazer isso se seus cubos vão ficar fixo).

Você poderia começar a fantasia e fazer geometria instancing etc, mas é só pegar o básico vai em primeiro lugar.

Respondeu 19/08/2008 em 12:12
fonte usuário

votos
6

Basta usar glTranslatef (ou o equivalente DirectX) para desenhar um cubo usando o mesmo código, mas mover o ponto relativo onde você desenha-lo. Talvez haja uma maneira melhor de fazer isso, porém, eu sou bastante novo para OpenGL. Certifique-se de definir o seu ponto de vista para que você possa vê-los todos.

Respondeu 04/08/2008 em 10:04
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more