language agnostic - Anzeigen von 100 schwebenden Cubes mit DirectX ODER OpenGL

Translate

Ich möchte 100 schwimmende Würfel mit anzeigenDirectXoderOpenGL.

Ich suche entweder nach einem Beispielquellcode oder nach einer Beschreibung der Technik. Ich habe Probleme, mehr als einen Würfel korrekt anzuzeigen.

Ich habe das Netz nach einer guten Reihe von Tutorials durchsucht und obwohl sie darüber sprechen, wie es geht3DPrimitive, was ich nicht finden kann, sind Informationen darüber, wie man eine große Anzahl von macht3DPrimitive -cubes, spheres, pyramids, und so weiter.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Sie sagen, Sie haben genug Probleme damit, einen Würfel anzuzeigen ... Ich bin mir also nicht sicher, ob Sie einen zum Anzeigen haben oder nicht.

Grundsätzlich ... geben Sie Ihren Code zum Schreiben eines Würfels in eine Funktion ein und rufen Sie diese Funktion dann 100 Mal auf.

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

Das ist der Grundriss, wie Sie dies tun können. Wenn Sie etwas effizienteres wollen, werfen Sie einen Blick in die Anzeigelisten, sobald Sie die Grundlagen herausgefunden haben :)

Quelle
Translate

Verwenden Sie einfach glTranslatef (oder das DirectX-Äquivalent), um einen Würfel mit demselben Code zu zeichnen, aber verschieben Sie den relativen Punkt, an dem Sie ihn zeichnen. Vielleicht gibt es einen besseren Weg, ich bin ziemlich neu in OpenGL. Stellen Sie sicher, dass Sie Ihren Standpunkt so einstellen, dass Sie alle sehen können.

Quelle
Translate

Ja, wenn Sie effizient wären, würden Sie alles in den gleichen Scheitelpunktpuffer werfen, aber ich glaube nicht, dass das Zeichnen von 100 Cubes eine in den letzten 5 Jahren produzierte GPU belastet. Sie sollten also den obigen Vorschlägen folgen.

Schreiben Sie einen einfachen Durchgang durch den Vertex-Shader. Schattieren Sie den Pixel-Shader nach Belieben. Übergeben Sie entweder eine Weltmatrix und führen Sie die Übersetzung im Vertex-Shader durch, oder berechnen Sie einfach die Vertex-Positionen des Weltraums auf der CPU-Seite (tun Sie dies, wenn Ihre Cubes fest bleiben sollen).

Sie könnten Lust bekommen und tunGeometrieinstanzierungusw., aber bringen Sie zuerst die Grundlagen in Gang.

Quelle