Mostrando 100 cubos flotantes usando DirectX O OpenGL

votos
13

Me gustaría mostrar 100 cubos flotantes usando DirectXo OpenGL.

Estoy buscando algún código fuente de muestra o una descripción de la técnica. Tengo problemas para obtener más de un cubo para mostrar correctamente.

He peiné la red para una buena serie de tutoriales y aunque se habla de cómo hacer 3Dprimitivas, lo que no puedo encontrar es información sobre cómo hacer un gran número de 3Dprimitivas - cubes, spheres, pyramids, y así sucesivamente.

Publicado el 04/08/2008 a las 07:51
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
7

Dice que tiene suficientes problemas para mostrar un cubo ... así que no estoy seguro de si tiene uno para mostrar o no.

Básicamente ... ponga su código para escribir un cubo en una función, luego simplemente llame a esa función 100 veces.

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();
         }
    }              
}

Ese es el esquema básico de cómo podrías hacer esto. Si desea algo más eficiente, eche un vistazo a las listas de presentación en algún momento una vez que tenga los conceptos básicos resueltos :)

Respondida el 04/08/2008 a las 10:12
fuente por usuario

votos
6

Sí, si fueras eficiente tirarías todo en el mismo búfer de vértices, pero no creo que dibujar 100 cubos empuje cualquier GPU producida en los últimos 5 años, así que deberías estar bien siguiendo las sugerencias anteriores.

Escriba un paso básico a través del sombreador de vértices, sombree como desee en el sombreador de píxeles. Pase en una matriz mundial y realice la traducción en el sombreado de vértices, o simplemente calcule las posiciones de los vértices del espacio mundial en el lado de la CPU (haga esto si sus cubos van a permanecer fijos).

Podrías hacerte elegante y hacer instancias de geometría , etc., pero solo aprende lo básico.

Respondida el 19/08/2008 a las 12:12
fuente por usuario

votos
6

Simplemente use glTranslatef (o el equivalente de DirectX) para dibujar un cubo usando el mismo código, pero moviendo el punto relativo donde lo dibuja. Tal vez hay una mejor manera de hacerlo, soy bastante nuevo en OpenGL. Asegúrese de establecer su punto de vista para que pueda verlos todos.

Respondida el 04/08/2008 a las 10:04
fuente por usuario

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