Domanda

Mi piacerebbe visualizzare 100 cubi fluttuanti utilizzando DirectX O OpenGL.

Sto cercando del codice sorgente di esempio o una descrizione della tecnica.Ho difficoltà a visualizzare correttamente più cubi.

Ho setacciato la rete per una buona serie di tutorial e anche se parlano di come fare 3D primitive, quello che non riesco a trovare sono informazioni su come eseguire un gran numero di 3D primitivi - cubes, spheres, pyramids, e così via.

Nessuna soluzione corretta

Altri suggerimenti

Dici di avere già abbastanza problemi a far visualizzare un cubo...quindi non sono sicuro se ne hai uno da mostrare o meno.

Fondamentalmente...inserisci il tuo codice per scrivere un cubo in una funzione, quindi chiama semplicemente quella funzione 100 volte.

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

Questo è lo schema di base su come potresti procedere.Se vuoi qualcosa di più efficiente, dai un'occhiata agli elenchi di visualizzazione una volta che hai capito le nozioni di base :)

Basta usare glTranslatef (o l'equivalente DirectX) per disegnare un cubo utilizzando lo stesso codice, ma spostando il punto relativo in cui lo disegnate.Forse c'è un modo migliore per farlo, sono abbastanza nuovo in OpenGL.Assicurati di impostare il tuo punto di vista in modo da poterli vedere tutti.

Sì, se fossi efficiente inseriresti tutto nello stesso buffer di vertici, ma non penso che disegnare 100 cubi spingerà qualsiasi GPU prodotta negli ultimi 5 anni, quindi dovresti stare bene seguendo i suggerimenti sopra.

Scrivi un passaggio di base attraverso il vertex shader, ombreggia come desideri nel pixel shader.Passa in una matrice mondiale ed esegui la traduzione nel vertex shader, oppure calcola semplicemente le posizioni dei vertici dello spazio mondiale sul lato CPU (fallo se i tuoi cubi rimarranno fissi).

Potresti essere fantasioso e farlo istanziazione della geometria ecc., ma prima iniziamo con le nozioni di base.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top