Affichage de 100 cubes flottants à l'aide de DirectX ou OpenGL

Je voudrais afficher 100 cubes flottants en utilisant DirectX ou OpenGL .

Je cherche un exemple de code source ou une description de la technique. J'ai du mal à obtenir plus d'un cube à afficher correctement.

J'ai repéré le net pour une bonne série de tutoriels et bien qu'ils parlent de la façon de faire des primitives 3D , je ne trouve pas d'informations sur la façon de faire un grand nombre de 3D primitives - cubes , sphères , pyramides , et ainsi de suite.

0

3 Réponses

Utilisez simplement glTranslatef (ou l'équivalent DirectX) pour dessiner un cube en utilisant le même code, mais en déplaçant le point relatif où vous l'avez dessiné. Peut-être qu'il y a une meilleure façon de le faire, je suis assez nouveau avec OpenGL. Assurez-vous de définir votre point de vue pour pouvoir les voir tous.

0
ajouté

Vous dites que vous avez assez de difficulté à afficher un cube ... donc je ne suis pas sûr si vous en avez un à afficher ou non.

Fondamentalement ... mettez votre code pour écrire un cube dans une fonction, puis appelez cette fonction 100 fois.

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

C'est le schéma de base de la façon dont vous pourriez y arriver. Si vous voulez quelque chose de plus efficace, jetez un oeil dans les listes d'affichage parfois une fois que vous avez compris les bases :)

0
ajouté

Oui, si vous étiez efficace vous jetteriez tout dans le même tampon de vertex, mais je ne pense pas que dessiner 100 cubes poussera n'importe quel GPU produit au cours des 5 dernières années, donc vous devriez bien suivre les suggestions ci-dessus.

Écrivez un passage de base à travers le vertex shader, ombragez toutefois votre désir dans le pixel shader. Passez soit dans une matrice du monde et faites la traduction dans le vertex shader, soit calculez juste les positions du vertex de l'espace du côté CPU (faites ceci si vos cubes restent fixes).

Vous pouvez vous faire plaisir et faire des instanciation de la géométrie , etc., mais il suffit de commencer par les bases.

0
ajouté